13

我经常添加set -e我的 bash 脚本。但是这次我必须调用一个命令,该命令在成功时返回一些无意义的数字而不是 0。我怎样才能告诉 bash 只忽略这个命令的返回值。

更改命令或更改其代码以符合标准不是一种选择。

4

2 回答 2

14

true总是返回一个零退出代码。所以你可以做

command-with-meaningless-return-value || true
于 2012-11-28T16:26:12.693 回答
5

如果您需要使用$?稍后的值,您可以这样做:

# A test funtion to demonstrate different exit status values
$ exit_with(){ return $1; }

$ exit_with 0

$ echo $?
0

$ exit_with 4

$ echo $?
4

$ exit_with 4 || true

$ echo $?
0

# capture the exit status rather than clobber it
$ exit_with 4 || exit_status=$?

$ echo $?
0

$ echo $exit_status
4

在这种情况下,使用$exit_status而不是$?. 我还没有找到一种方法来做类似?=$?declare ?=$?

于 2018-11-21T02:28:22.367 回答