我想寫一個類似的別名:
alias baz="false || echo bar"
(實際上不是false
,這是一個可能失敗的命令)。但是,我想將失敗的狀態代碼傳遞給下一個呼叫者。換句話說,這是當前的行為:
$ false; echo $?
1
$ false || echo foo; echo $?
0
我想做一個不同的操作,它在各個方面都有相同的行為false || echo foo
,除了當我這樣做時echo $?
它會回來1
。
筆記:我預計該echo foo
位基本上總是會成功。
答案1
保存命令返回值的函數並不複雜:
f() {
some-command-that-can-fail
retval=$?
if [ "$retval" != 0 ] ; then
echo the command failed
fi
return $retval
}
如果您不關心確切的回傳值,而只是想要一個非零回傳代碼,那麼這將會起作用:
somecmd || ( echo it failed ; false )
您需要子 shell(或複合區塊)僅false
在原始命令失敗時才執行最終命令。