bash腳本小技巧之一:set -e和set -u


今天一朋友問我一個bash腳本在開頭出現了set -u 和 set -e 兩行是什么作用,我也納悶沒見過這樣的寫法啊於是百度了一下,才發現原來這兩個bash的選項這么有用,這邊記錄下方便以后查閱。

   set -e     設置該選項后,當腳本中任何以一個命令執行返回的狀態碼不為0時就退出整個腳本(默認腳本運行中某行報錯會繼續往下執行),這樣就不必設置很多的判斷條件去判斷每個命令是否執行成功,特別那些依賴很強的地方,腳本任何一處執行報錯就不應繼續執行其他語句的時候就特別有用,之前寫的一些像LAMP的安裝腳本就深有體會。。。

   簡單的寫個腳本測試下,在不使用set -e 的時候執行如下腳本:

11

   執行結果,可以看到報錯后繼續運行,輸出了 End 

12

   在腳本中加入set -e 后,執行結果:

13

   set -u     設置該選項后,當腳本在執行過程中嘗試使用未定義過的變量時,報錯並退出運行整個腳本(默認會把該變量的值當作空來處理),這個感覺也非常有用,有些時候可能在腳本中變量很多很長,疏忽了把某個變量的名字寫錯了,這時候運行腳本不會報任何錯誤,但結果卻不是你想要的,排查起來很是頭疼,使用這個選項就完美的解決了這個問題。

  同樣來簡單測試下:

1

   在不加set -u 時,執行不會有任何問題,會把$GOOD變量當作空值來處理:

2

   當加上set -u時的運行結果:

3

   還有其他一些可以設置的bash選項,個人感覺作用不是很大,就不再一一介紹,有興趣的可以百度。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM