Unix/Linux指令碼中"set -e"的作用
阿新 • • 發佈:2019-01-05
有些指令碼中會看到這樣的語句:
#!/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