我想知道在if語句中檢查退出狀態以回顯特定輸出的最佳方法是什麼。Bash - 如何使用if語句檢查退出狀態
我想這是
if [ $? -eq 1 ]
then
echo "blah blah blah"
fi
我也有這個問題的是,出口語句是之前的if語句,只是因爲它必須有一個退出代碼,我知道我在做什麼因爲出口沃爾明顯會退出該計劃。
我想知道在if語句中檢查退出狀態以回顯特定輸出的最佳方法是什麼。Bash - 如何使用if語句檢查退出狀態
我想這是
if [ $? -eq 1 ]
then
echo "blah blah blah"
fi
我也有這個問題的是,出口語句是之前的if語句,只是因爲它必須有一個退出代碼,我知道我在做什麼因爲出口沃爾明顯會退出該計劃。
每個運行的命令都有退出狀態。
該檢查查看在該行運行之前最近完成的命令的退出狀態。
如果你想你的腳本來當測試返回true退出(以前的命令失敗),那麼你把exit 1
(或其他)是if
塊內的echo
後。
這就是說,如果你正在運行命令,並希望測試其輸出使用以下往往更直截了當。
if some_command; then
echo command returned true
else
echo command returned some error
fi
或打開,大約用!
爲否定
if ! some_command; then
echo command returned some error
else
echo command returned true
fi
不過請注意,無論是那些關心什麼錯誤代碼是的。如果你知道你只關心特定的錯誤代碼,那麼你需要手動檢查$?
。
$?
是一個像其他任何參數。在最終致電exit
之前,您可以保存其使用價值。
exit_status=$?
if [ $exit_status -eq 1 ]; then
echo "blah blah blah"
fi
exit $exit_status
tail /var/log/XXX.log | grep 'to be found' && echo found
注意退出代碼!= 0用於報告錯誤。所以,這是更好地做:的
retVal=$?
if [ ! $? -eq 0 ]; then
echo "Error"
fi
exit $retVal
代替
# will fail for error codes > 1
retVal=$?
if [ $? -eq 1 ]; then
echo "Error"
fi
exit $retVal
Plaese發表您的完整的腳本(或至少是一個更廣泛的範圍內)。否則這看起來很好。 – RedX 2014-10-31 13:21:49
如果您需要在兩個不同的地方使用某個特定程序調用的退出代碼,那麼您需要保留它 - 沿着'some_program; RC = $ ?;如果[$ {rc} -eq 1] .... fi;退出$ {rc}' – twalberg 2014-10-31 14:37:11