"[ "$foo_user" = 'foo' ] && foo_user='bar' || true" 的作用是什么?

"[ "$foo_user" = 'foo' ] && foo_user='bar' || true" 的作用是什么?

我在我们的一个存储库中找到了这一行,没有任何注释解释它的作用。我正在修复在此存储库中发现的一个错误,但不知道如何处理该行。我不确定如何以省时的方式对此进行研究,所以我在这里询问。

[ "$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”有用?

相关内容