0%

在 Bash 腳本實現 try catch!

try catch 是 java 用來補捉例外狀況的語法,bash 腳本本身並不支援這種語法,但是我們可以透過特殊的方法來達到同樣的目的。

例如:

1
2
3
4
5
6
7
8
9
10
{ # try

command1 &&
command2 &&
command3

} || { # catch
# save log for exception
echo 執行異常
}

在上面的範例當中,當 command1, command2 發生錯誤時,後續的指令都不會執行,並會直接跳到 echo 執行異常 這一行。

而且當 command1, command2, command3 都順利執行後,echo 執行異常 並不會被觸發。

程式會這樣運作是因為 or 運算元(||)會判斷第一個括號({...})內回傳的值是不是 True,若是 True 的話,第二個括號內的指令就不會執行。

指令順利執行完並結束可以視為 True,所以第一個括號內的三個指令才需要用 and 運算元(&&)串接在一起,因為 True AND True AND True == True。

如果把 && 刪掉的話,command1, command2, command3 都會執行,且如果 command3 執行異常的話,echo 執行異常 也會被觸發。