我正在看一个shell脚本代码,我不知道双管道(||)后跟冒号(:)的目的是什么,有人可以解释一下吗?如,
$ <some_command> >/dev/null 2>&1 || :
答案 0 :(得分:7)
||
是布尔值或。
:
是一个无操作命令,它不执行任何操作并以真实状态退出。
因此,anything || :
无条件地返回true。
因此,some_command_that_may_fail ||:
将永远成功。
如果正在使用set -e
或ERR陷阱,这很重要,但如果命令失败,您不希望脚本退出或引发错误。
答案 1 :(得分:2)
:冒号是noop,双管是OR操作,所以......
执行some_command OR(如果some_command失败)执行:(这是no操作)
||表示仅在第一个命令命令失败时才执行秒。在这种情况下,第二个命令代表&#34;什么都不做&#34;