我有一個 bash 腳本set -ex,這意味著一旦其中的任何命令遇到錯誤,正在運行的腳本就會退出。
我的用例是這個腳本中有一個子命令,我想捕獲它的錯誤,而不是讓正在運行的腳本關閉。
例如,這里是 myscript.sh
#!/bin/bash
set -ex
# sudo code here
error = $( some command )
if [[ -n $error ]] ; then
#do something
fi
知道我如何實作這一目標嗎?
uj5u.com熱心網友回復:
您可以覆寫單個命令的輸出
this_will_fail || true
或者對于整個代碼塊
set e
this_will_fail
set -e
但是請注意,如果您決定不想再set -e在腳本中使用,這將不起作用。
uj5u.com熱心網友回復:
如果要自己處理特定命令的錯誤狀態,可以在if陳述句中用作條件:
if ! some command; then
echo 'An error occurred!' >&2
# handle error here
fi
由于命令是條件的一部分,它不會在出錯時退出。請注意,除了!(否定它,因此then如果命令失敗而不是成功,子句將運行),您只需將命令直接包含在if陳述句中(沒有括號,圓括號等)。
順便說一句,在您的偽代碼示例中,如果命令產生任何輸出,您似乎將其視為錯誤;通常這不是您想要的,我假設您實際上想要測驗退出狀態以檢測錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392378.html
標籤:猛击
