何时在 Bash 中使用“|| true”?

何时在 Bash 中使用“|| true”?

我对“ ”很好奇|| true,写了下面这对例子。

示例#1

    #!/usr/bin/env bash
    
    rm some_random_file_that_does_not_exist
    
    echo "End of program"

执行时 if 产生以下结果:

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

例子#2

#!/usr/bin/env bash

rm some_random_file_that_does_not_exist || true

echo "End of program"

执行时会产生以下结果:

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

我能看出的唯一区别是,在Example#1 中,尝试删除不存在文件的行的结果代码是1,而在Example#2 中,结果代码是0(零)。

我理解这个“”的方式|| true是确保“”运算符左侧的命令的执行||以结果代码零结束。

|| true所以我的问题是...除了这个原因之外,还有其他原因可以证明在 Bash 中的命令末尾使用“”是合理的吗?

答案1

|| trueerrexit当设置 shell 选项时,可用于抑制出错时立即退出;该选项可以set -e通过set -e在脚本中显式地启用,或者通过使用显式解释器和选项调用脚本来启用:bash -e scriptname。在sh类似 shell 中,如bash, :(成功地不执行任何操作的实用程序)也可以用来代替true, ,如|| :

它也可以用于具有相同目的的 Makefile 配方中。

相关内容