我想写一个类似的别名:
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
在原始命令失败时才运行最终命令。