我正在查看一个shell脚本代码,但不知道双竖线(||)后面带冒号(:)的用途是什么,请问能解释一下吗?例如:
$ <some_command> >/dev/null 2>&1 || :
$ <some_command> >/dev/null 2>&1 || :
||
是布尔或操作符。
:
是一个无操作的命令,什么也不做并以真实状态退出。
因此,anything || :
无条件返回真。
因此,some_command_that_may_fail ||:
将始终成功。
如果使用了 set -e
或 ERR trap,但您不希望脚本在命令失败时退出或引发错误,则这非常重要。
冒号表示没有操作,双竖线表示或运算,因此...
执行某个命令或者(如果该命令失败)执行 :(即无操作)
|| 表示仅在第一个命令失败时才执行第二个命令。在这种情况下,第二个命令代表“不执行任何操作”
grep
没有找到匹配项,它会执行失败,但你可能不认为这是脚本的失败,因此grep string file.txt || :
将防止你的脚本退出。 - chepner