我想在 Bash 脚本中执行类似下面的操作。我如何用 Bash 语法实现它?
if !((a==b) && (a==c))
then
# Do something
end if
最佳答案
对于数字比较,你可以这样做:
if ! (( (a == b) && (a == c) ))
对于字符串比较:
if ! [[ "$a" == "$b" && "$a" == "$c" ]]
在 Bash 中,双括号为比较(也用于 for ((i=0; i<=10; i++))
和 $(())
算术扩展)建立了一个算术上下文(顺便说一句,其中美元符号大多是可选的)并用于区分来自一组创建子 shell 的单括号的序列。
例如,这会执行命令 true
而且,由于它始终为真,因此它会执行以下操作:
if (true); then echo hi; fi
这是一样的
if true; then echo hi; fi
除了创建了一个子shell。然而,if ((true))
测试名为“true”的变量的值。
如果您要包括一个美元符号,那么“$true”将明确地成为一个变量,但是 if
带单括号(或不带括号)的行为会改变。
if ($true)
或
if $true
会将变量的内容作为命令执行,并根据命令的退出值执行条件操作(如果内容不是有效命令,则给出“未找到命令”消息)。
if (($true))
与if ((true))
做同样的事情如上所述。
关于bash - 在 Bash shell 脚本中使用复合条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812257/