linux comman中两个竖条和冒号的含义是什么?

时间:2016-12-09 08:56:32

标签: shell

我看到这样的命令:

sudo groupadd www-data || :

但我不知道||的含义:

我发现:别名为真的说法,这使整条线路保持沉默?

1 个答案:

答案 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是否失败,整体表达式的返回状态都是成功的,它永远不会导致脚本终止。