使用 || 後傳遞退出狀態代碼

使用 || 後傳遞退出狀態代碼

我想寫一個類似的別名:

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在原始命令失敗時才執行最終命令。

相關內容