判斷命令是否成功執行 .

問題:

需要在成功執行某個命令之後執行一個命令。比如,你需要進入某個目錄,刪除其中所有的文件,但是如果cd命令失敗,你就不去執行刪除的動作(比如權限不允許,或者你把目錄的名字輸入錯誤)

 

解決方案:

可以使用cd命令的返回值($?)並結合if語句進行判斷。

cd mytmp

if (( $? )); then rm * ; fi

 

討論:

很明顯,直接輸入命令的時候,是不需要進行這個判斷的。cd的所有錯誤信息都一目瞭然的時候,你肯定不會去執行rm操作。但是腳本就是另外一回事情了,如果你不期望刪除你工作目錄的文件,那麼檢測就是必須的了。

比如你在某個沒有mytmp的目錄執行了腳本,cd命令會失敗,有了這個判斷,當前的目錄會保持原樣。如果沒有這個if判斷,腳本會直接執行下面的語句,rm *會刪除當前目錄所有的文件。

那麼$?是如何得到的呢?它是命令的返回值,對c程序員來說,這個值也就是賦給exit函數的參數,比如exit(4)會返回4.對於腳本來說,0認爲是成功,非零認爲是失敗。

在編寫腳本的時候,你會期望你的腳本返回正確的值,從而,$?會正確的設置,如果你不這麼做,這個值會保留最後一個命令的返回值,這應該不是你期望的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章