当我设置-e时,如何忽略返回值不同于0?

时间:2012-11-28 16:24:06

标签: bash

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

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

2 个答案:

答案 0 :(得分:10)

true始终返回零退出代码。所以你可以做到

command-with-meaningless-return-value || true

答案 1 :(得分:0)

如果以后需要使用$?的值,则可以执行以下操作:

# 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 ?=$?

的事情