最近學習shell指令碼想到乙個問題,如果指令碼**現了一條異常語句,甚至可以影響整個指令碼的使用,那麼是否有一旦出現問題就可以及時停止的方法呢?在shell指令碼中set命令就可以輕鬆實現。set命令的-e引數,linux系統自帶的說明是:"exit immediately if a ****** command exits with a non-zero status.",也就是說,在"set -e"之後出現的**,一旦出現了返回值非零,整個指令碼就會立即退出,那麼就可以避免一些指令碼的危險操作。
實驗如下:
#!/bin/sh如果沒有使用set -e,在ls /data/leo語句時會提示找不到檔案,但會繼續執行下一條語句#set -e
ls /data/leo
echo $?
./ex1.sh
使用了set -e後,在ls /data/leo語句時依然會提示找不到檔案,但不會執行下一條語句了
補充:關於exit 0 exit 1以及echo $?說明
exit 0---是正常退出的命令
exit 1---是非正常退出的命令
echo $?獲取上次命令執行的結果,如果是0就是正常執行,如果非0就是執行出現了異常
shell 指令碼中set e選項作用範圍
編寫shell指令碼沒多久,對於其許多命令的具體用法還不太熟悉。最近剛好有需求,就嘗試用指令碼去實現。其中就有用到set e選項。在用這個命令之前,也查過其功能,描述比較簡單 就是當命令以非零狀態退出時,則退出shell。主要作用是,當指令碼執行出現意料之外的情況時,立即退出,避免錯誤被忽略,導致最...
Unix Linux指令碼中 set e 的作用
有些指令碼中會看到這樣的語句 html view plain copy print?bin bash set e command 1 command 2 exit 0 bin bash set e command 1 command 2 exit 0 set e 這句語句告訴bash如果任何語句的執...
Unix Linux指令碼中 set e 的作用
編寫shell指令碼沒多久,對於其許多命令的具體用法還不太熟悉。最近剛好有需求,就嘗試用指令碼去實現。其中就有用到set e選項。在用這個命令之前,也查過其功能,描述比較簡單 就是當命令以非零狀態退出時,則退出shell。主要作用是,當指令碼執行出現意料之外的情況時,立即退出,避免錯誤被忽略,導致最...