我看到这样的命令:
sudo groupadd www-data || :
但我不知道||的含义:
我发现:
别名为真的说法,这使整条线路保持沉默?
答案 0 :(得分:2)
这是忽略sudo groupadd www-data
的退出状态。
一旦其中一个表达式失败,最好使shell脚本失败。当您忘记检查某些命令的返回代码时,这可以防止难以捕获错误。这通常通过在shell脚本的最开头添加以下内容来实现:
set -e
set -o pipefail
但是现在如果你想故意忽略其中一个命令的退出状态怎么办?您可以临时禁用fail-on-error标志:
set +e
sudo groupadd www-data
set -e
但这很难看。为了避免丑陋,我们可以使用OR布尔表达式(||
)和:
命令,它没有任何效果并且总是成功。因此,sudo groupadd www-data || :
被翻译为:
运行sudo groupadd www-data
,如果失败,请运行:
,这不会失败。因此,无论sudo
是否失败,整体表达式的返回状态都是成功的,它永远不会导致脚本终止。