我在我们的一个存储库中找到了这一行,没有任何注释解释它的作用。我正在修复在此存储库中发现的一个错误,但不知道如何处理该行。我不确定如何以省时的方式对此进行研究,所以我在这里询问。
[ "$foo_user" = 'foo' ] && foo_user='bar' || true
它看起来像一个 if 语句,测试 if $foo_user='foo'
then 返回 true,然后foo_user
如果没有设置则设置为“bar”?我真的不知道该怎么办。
这段代码有什么作用?
答案1
让我们把它分开:
[ "$foo_user" = 'foo' ]
检查foo_user
变量的值是否为“foo”。
&& foo_user='bar'
如果上一个命令成功则运行 ( &&
);因此,如果foo_user
的值为“foo”,则将其设置为“bar”。
|| true
如果上一个命令失败则运行 ( ||
);因此,在所有情况下,复合命令(在本例中为完整的行)都会成功。当启用时,这种模式很常见set -e
(即使实际上没有必要)。
也可以看看shell 的控制和重定向运算符是什么?,shell 逻辑运算符 &&、|| 的优先级, 和为什么模式“command || true”有用?