San*_*ero 14 bash shell comparison
我想在bash脚本中执行类似下面的操作.我如何在bash语法中实现.
if !((a==b) && (a==c))
then
do something
end if
Run Code Online (Sandbox Code Playgroud)
Pau*_*ce. 27
对于数字比较,您可以:
if ! (( (a == b) && (a == c) ))
Run Code Online (Sandbox Code Playgroud)
用于字符串比较:
if ! [[ "$a" == "$b" && "$a" == "$c" ]]
Run Code Online (Sandbox Code Playgroud)
在Bash中,双括号设置了一个算术上下文(顺便说一下,美元符号主要是可选的)用于比较(也用于for ((i=0; i<=10; i++))和$(())算术扩展),用于区分序列和一组创建的单个括号.子壳.
例如,这会执行命令true,因为它始终为true,它执行操作:
if (true); then echo hi; fi
Run Code Online (Sandbox Code Playgroud)
这是一样的
if true; then echo hi; fi
Run Code Online (Sandbox Code Playgroud)
除了创建子shell.但是,if ((true))测试名为"true"的变量的值.
如果你要包含一个美元符号,那么"$ true"将明确地成为一个变量,但是if单个括号(或没有括号)的行为会改变.
if ($true)
Run Code Online (Sandbox Code Playgroud)
要么
if $true
Run Code Online (Sandbox Code Playgroud)
将执行变量的内容作为命令,并根据命令的退出值执行条件操作(如果内容不是有效命令,则给出"未找到命令"消息).
if (($true))
Run Code Online (Sandbox Code Playgroud)
做与上述相同的事情if ((true)).
if [ "$a" != "$b" -o "$a" != "$c" ]; then
# ...
else
# ...
fi
Run Code Online (Sandbox Code Playgroud)