shell中set?-e的具體使用
set -e 是一個 Shell 命令,它用于在腳本運(yùn)行時自動退出,如果命令執(zhí)行失敗,則它將立即退出并返回一個非零的退出狀態(tài)碼。這個命令可以確保在腳本運(yùn)行時,如果有任何錯誤發(fā)生,腳本將停止運(yùn)行,避免繼續(xù)執(zhí)行可能會產(chǎn)生更多問題的命令。
例如,在以下腳本中,如果在執(zhí)行第一條命令時發(fā)生錯誤,腳本將立即停止運(yùn)行,而不會繼續(xù)執(zhí)行后面的命令:
#!/bin/bash set -e # 執(zhí)行第一條命令 command1 # 執(zhí)行第二條命令 command2 # 執(zhí)行第三條命令 command3
在這個示例中,如果 command1?? 執(zhí)行失敗,腳本將停止運(yùn)行,并返回一個非零的退出狀態(tài)碼。如果 command1?? 執(zhí)行成功,腳本將繼續(xù)執(zhí)行 command2?? 和 command3。
如果不使用 set -e?
如果不使用set -e 命令,當(dāng)腳本中有命令執(zhí)行失敗時,腳本將繼續(xù)執(zhí)行后面的命令。這可能會導(dǎo)致一些潛在的問題,因?yàn)楹罄m(xù)的命令可能會繼續(xù)執(zhí)行,而不考慮前面的命令是否執(zhí)行成功。
例如,在以下腳本中,如果**command1?? 執(zhí)行失敗,腳本將繼續(xù)執(zhí)行** command2?? 和 command3:
#!/bin/bash # 執(zhí)行第一條命令 command1 # 執(zhí)行第二條命令 command2 # 執(zhí)行第三條命令 command3
在這個示例中,如果 command1?? 執(zhí)行失敗,腳本將繼續(xù)執(zhí)行 command2?? 和 command3,這可能會導(dǎo)致一些潛在的問題。
因此,使用 set -e 命令可以確保在腳本運(yùn)行時自動退出,如果命令執(zhí)行失敗,則它將立即退出并返回一個非零的退出狀態(tài)碼,以避免可能的問題。
示例
001、 不加 set -e的情況
(base) [root@PC1 test2]# ls test.sh (base) [root@PC1 test2]# cat test.sh #!/bin/bash xxxx echo step2 (base) [root@PC1 test2]# bash test.sh test.sh: line 3: xxxx: command not found step2
002、添加set -e
(base) [root@PC1 test2]# ls test.sh (base) [root@PC1 test2]# cat test.sh #!/bin/bash set -e xxxx echo step2 (base) [root@PC1 test2]# bash test.sh test.sh: line 5: xxxx: command not found
到此這篇關(guān)于shell中set -e的具體使用的文章就介紹到這了,更多相關(guān)shell set -e 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)檢測進(jìn)程是否正在運(yùn)行
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)檢測進(jìn)程是否正在運(yùn)行,本文給出的代碼簡潔清晰,并給出了使用方法,需要的朋友可以參考下2015-01-01shell腳本實(shí)現(xiàn)服務(wù)器進(jìn)程監(jiān)控的方法
這篇文章主要介紹了shell腳本實(shí)現(xiàn)服務(wù)器進(jìn)程監(jiān)控的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2018-04-04shell腳本快速創(chuàng)建、格式化、掛載新添加的磁盤實(shí)現(xiàn)方法詳解
這篇文章主要介紹了shell腳本快速創(chuàng)建、格式化、掛載新添加的磁盤實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10