set -x介紹
用於腳本調試,在liunx腳本中可用set -x就可有詳細的日志輸出.免的總是用echo了
參考 #!/bin/bash set -x a=${1} b=$
結果
bash This is a premium name 1 2
+ a=1
+ b=1
set -e介紹
每個腳本都應該在文件開頭加上set -e,這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。
參考
#!/bin/bash set-e lp #這里運行會出錯 date 這種情況下,運行一旦出錯就會退出,不放過一個問題: $ ./test.sh lp: Error - nodefaultdestination available. 當然了,這也有不好的地方,有時候命令執行本來就可能是失敗的,你還是希望它繼續,可以臨時加上|| true: #!/bin/bash set-e lp || true date 不過個人覺得這樣的設置用處不是特別大,因為很多時候就是需要處理不同的錯誤情況,而這樣只能要么遇到錯誤退出,要么認為正確,導致無法走到異常分支。
使用-e幫助你檢查錯誤。如果你忘記檢查,bash會幫你執行。不幸的是,你將無法檢查$?,因為如果執行的語句不是返回0,bash將無法執行到檢查的代碼。你可以使用其他的結構:
if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi could be replaced with 能夠被代替為 command || { echo "command failed"; exit 1; } 或者 if ! command; then echo "command failed"; exit 1; fi