1. 程式人生 > >Unix/Linux指令碼中"set -e"的作用

Unix/Linux指令碼中"set -e"的作用

有些指令碼中會看到這樣的語句:

#!/bin/bash
set -e
command 1
command 2
...
exit 0

“set -e” 這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。

使用-e幫助你檢查錯誤。如果你忘記檢查執行語句的結果,bash會幫你執行。不幸的是,你將無法檢查$?,因為如果執行的語句不是返回0,bash將無法執行到檢查的程式碼。你可以使用其他的結構:

command  
if [ "$?"-ne 0]; then   
    echo "command failed";   
    exit 1;   
fi 
可被代替為:
command || { echo "command failed"; exit 1; }   
或者:
if ! command; then  
     echo "command failed";   
    exit 1;   
fi  
如果你有一個命令返回非0或者你對語句執行的結果不關心,那你可以使用command || true,或者你有一段很長的程式碼,你可以關閉錯誤檢查(不使用set -e),但是我還是建議你保守地使用這個語句。

轉自:http://blog.csdn.net/todd911/article/details/9954961