BASH 判斷命令是否成功執行

2021-04-27 06:53:55 字數 786 閱讀 9315

問題:

需要在成功執行某個命令之後執行乙個命令。比如,你需要進入某個目錄,刪除其中所有的檔案,但是如果

cd命令失敗,你就不去執行刪除的動作(比如許可權不允許,或者你把目錄的名字輸入錯誤)

解決方案:

可以使用

cd命令的返回值

($?)

並結合if

語句進行判斷。

cd mytmp

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

討論:很明顯,直接輸入命令的時候,是不需要進行這個判斷的。

cd的所有錯誤資訊都一目了然的時候,你肯定不會去執行

rm操作。但是指令碼就是另外一回事情了,如果你不期望刪除你工作目錄的檔案,那麼檢測就是必須的了。

比如你在某個沒有

mytmp

的目錄執行了指令碼,

cd命令會失敗,有了這個判斷,當前的目錄會保持原樣。如果沒有這個

if判斷,指令碼會直接執行下面的語句,

rm *

會刪除當前目錄所有的檔案。 那麼

$?是如何得到的呢?它是命令的返回值,對

c程式設計師來說,這個值也就是賦給

exit

函式的引數,比如

exit(4)

會返回4.

對於指令碼來說,

0認為是成功,非零認為是失敗。

在編寫指令碼的時候,你會期望你的指令碼返回正確的值,從而,

$?會正確的設定,如果你不這麼做,這個值會保留最後乙個命令的返回值,這應該不是你期望的。

C 在DOS下執行命令並判斷是否執行成功!

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

shell指令碼判斷上乙個命令是否執行成功

shell指令碼中判斷上乙個命令是否執行成功 shell中使用符號 來顯示上一條命令執行的返回值,如果為0則代表執行成功,其他表示失敗。結合if else語句實現判斷上乙個命令是否執行成功。經過驗證,該方法也適用於make命令,並不僅僅限於shell 命令。示例如下 if ne 0 then ech...

判斷PHP的exec函式是否執行成功

做乙個 發布的系統,需要用到php的exec函式來執行linux下的命令和git,svn命令,如何判斷php的exec函式是否執行成功呢?寫個php檔案來做實驗 exec函式第乙個引數是執行的命令,第二個引數是執行的結果,第三個引數是執行的狀態。php 1 2 3 4 5 6 7 8 9 exec ...