在bash,我執行命令,並把結果在一個變量是這樣的:檢測一擊「出口」價值的失敗
export var=`svn ls`
但如果SVN由於某種原因失敗 - 說它返回非零錯誤代碼 - 導出仍然返回狀態代碼0.如何檢測執行的命令是否失敗?
在bash,我執行命令,並把結果在一個變量是這樣的:檢測一擊「出口」價值的失敗
export var=`svn ls`
但如果SVN由於某種原因失敗 - 說它返回非零錯誤代碼 - 導出仍然返回狀態代碼0.如何檢測執行的命令是否失敗?
var=`svn ls`
if [[ $? == 0 ]]
then
export var
else
unset var
fi
$?
是最後執行的命令,這是svn ls
這裏的退出代碼。
jmohr的解決方案既簡短又甜美。輕度改編,
var=`svn ls` && export var || unset var
將大約相當於上面(一個有效的標識符的export
永遠不會失敗,除非你已經做了一些可怕的和運行的環境空間)。採取任何你想要的 - 我使用unset
只是爲了避免$var
可能有價值,即使它沒有出口。
我有類似的問題,這是可以做到這樣的:
rm -f error_marker_file export var=`svn ls || touch error_marker_file` [ -f error_marker_file ] && echo "error in executing svn ls"
var=`svn ls` && export var
export FOO=$(your-command) || echo "your-command failed"
這不起作用,因爲問題指出:$?如果你這樣寫,你可以從「導出」設置,而不是「你的命令」。 – ephemient 2008-10-29 20:35:14
它的工作原理。我會堅持一個稍微優雅的解決方案 - 否則你已經掌握了它。 – 2008-10-29 17:41:32