shell基礎第八講

1、命令執行狀態返回值
相信大家學習到這里肯定是對命令的使用有一定的了解,不知道大家發現沒有我們執行命令有時候會成功,有時候會失敗,在我們制作自動化腳本中,如果過程中間有一個命令執行失敗了就會導致任務停止,這個時候我們就會通過判斷命令是否執行成功的方式來起到一個承上啟下的作用,這種思想在實際工作中使用很多。
大家應該還記得我們之前分享過幾個位置參數,比如$1,$2..以此往后,他們分別表示執行腳本的第一個參數,第二個參數.. 以此往后。他們有共同的特點就是都是一個$字符加上一個數字來表示,而命令執行狀態返回值同樣也使用到了$這個字符本身。
命令執行狀態值有兩種結果,一種為0,表示命令執行成功,還有一種為1~255之間的任意一個數值,這都是表示命令執行是失敗的。
獲取命令執行狀態返回值我們使用 $? 來獲取,我們可以使用echo回顯命令來獲取,比如:
bash [[email protected] ~]#echo $?
注意:這里需要強調的是使用$? 是用來判斷上一條命令的執行狀態值的,因此在你執行完命令之后你需要立馬使用 echo $? 來獲取狀態值,中間不能再執行任何其他的命令,比如我們執行一個命令來看看:
bash [[email protected] ~]#ls -l 總用量 4 -rw——-. 1 root root 1261 6月 13 2019 anaconda-ks.cfg [[email protected] ~]#echo $? 0
當我查看當前目錄的詳細文件信息時,他就打印給我們了,命令執行本身是沒有錯誤的,因此我們查看$?的值可以看到是0。我們再來看一個例子
bash [[email protected] ~]#lss -l bash: lss: 未找到命令… 相似命令是: ‘ls’ [[email protected] ~]#echo $? 127
當我不小心執行了lss命令時,shell返回一個錯誤給我們,此時我立即查看命令狀態返回值,發現是127,這就表示這條命令是失敗的,我們也可以看到報錯原因是因為系統中沒有這個命令導致報錯。
2、使用案例:
比如下面這個例子:
bash [[email protected] ~]#lss -l &> /dev/null [[email protected] ~]#if [ $? -eq 0 ];then echo “正確”;else echo “出錯啦”;fi 出錯啦
shell腳本中經常使用到諸如把命令執行結果寫入/dev/null,中,這種是把正確信息和錯誤提示信息統統寫給Linux的無敵洞,不給我們提示任何消息,此時就需要使用 $?來判斷命令狀態返回值是否為0這樣的方式,從而執行下一條命令。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
股票走势分析