iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
IT管理

用UNRAID打造AIO全生態系列 第 17

Bash Script:Bash指令撰寫

  • 分享至 

  • xImage
  •  

在開始撰寫腳本前
我們要先來看看Bash指令有哪些"要訣"
這會影響整體腳本執行的效率與可靠性

1. &,&&,|,||

這四個符號可以控制腳本內指令執行的行為

  • &

在每個指令後加上&即可保持在後台執行
但Plugin預設RUN IN BACKGROUND就已經有這個功能了
所以RUN IN BACKGROUND按紐就相當於以下指令

bash /boot/config/plugins/user.scripts/scripts/xxx/script &

小提示
如果有些腳本不想讓它全部後臺執行
也可以點選前面的RUN SCRIPT,再修改腳本
再讓想後臺執行的指令後加上&
https://ithelp.ithome.com.tw/upload/images/20221001/20117399jtqsbI7Rio.png

  • &&

指令後加上這個表示前一個指令執行成功後,才繼續執行第二個
具體用法為

command1 && command2

小提示
可以做指令的除錯
讓整個腳本不會忽略一個指令出錯而導致繼續執行

  • |

這個指令常用的用法對前面的輸出做篩選
例如

du -ah /var/lib/docker/containers/ | grep -v "/$" | sort -rh | head -60 | grep .log

這個腳本可以輸出Docker.img裡所有container log的大小
這樣就不用寫複雜的if判斷式了,可直接當echo輸出
例如

echo du -ah /var/lib/docker/containers/ | grep -v "/$" | sort -rh | head -60 | grep .log
  • ||

這個指令則是&&的相反,反而是前個指令執行失敗後,才繼續執行第二個
小提示
具體用到此方法的機會較少
因為腳本裡的指令,我們還是希望它能完整執行成功比較好
但有時候假如前個指令沒有任何輸出,就很容易被判斷為執行失敗
所以就會用到此用法了

2.定義變數

最後是複雜腳本會用到的變數:
假如只是單純更改,我們並不想將腳本內的內容每個地方都去修改
所以就需定義變數,方便對所有值直接修改

#定義變數
value=(數值或"字串"皆可)

#使用變數(切記包含引號)
"$value"

上一篇
Bash Script:Bash Script基礎操作設定
下一篇
Bash Script:Bash+PHP指令撰寫
系列文
用UNRAID打造AIO全生態31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言