使用 || 后传递退出状态代码

使用 || 后传递退出状态代码

我想写一个类似的别名:

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在原始命令失败时才运行最终命令。

相关内容