注意:這個問題沒有以正確的方式提出。原因在於條件行if ! (commad)
中的!
是部分的的命令,因此,它更改了$?
。所以,當我檢查$?
退出狀態command
時,我錯了。接受的答案詳細解釋了這一點。爲什麼我感到困惑:「BASH命令失敗時退出狀態代碼爲0」
根據我的編碼經驗,程序在成功時返回/退出0,失敗時返回其他值。例如,在C中,我們使用exit 0
來表示終止成功。但是當我編寫一個bash腳本來確定命令是否成功時,我發現很奇怪0
現在意味着發生了一些錯誤,並且命令失敗。例如,
if ! (make $1); then
exit 1
fi
問題爲什麼退出狀態代碼爲0,在命令BASH失敗?
你談論的'! (讓$ 1)在這裏測試,或者你在談論別的東西? (至於你對'scp'的評論,我已經用了幾種不同的方式在它失敗的情況下運行它,並且它的退出狀態是1)。 – nos 2014-10-30 22:32:55
簡答:不是。如果使用'!'反轉它,另一方面... – 2014-10-30 22:33:00
'scp nosuchbox.example.com:nosuchfile.txt。 ; echo $?'爲我打印1。 – 2014-10-30 22:34:45