我有个问题
a=1
b=2
Run Code Online (Sandbox Code Playgroud)
我想要将比较输出到变量。即在 Windows 语言中你可以写这样的东西。它应该打印false
print ($a == $b)
Run Code Online (Sandbox Code Playgroud)
在控制台中尝试以下这些。
echo $a -eq $b
echo (( $a -eq $b ))
echo "$a" -eq "$b"
c= $(expr "$a" -eq "$b" )
echo $c
Run Code Online (Sandbox Code Playgroud)
您可以使用算术扩展。
echo $(( a == b ))
Run Code Online (Sandbox Code Playgroud)
如果表达式为真,则打印 1;如果表达式为假,则打印 0。变量名前不需要加$
,可以像C语言一样使用运算符,并且空格可以省略。有关详细信息,请参阅Bash 参考手册:Shell 算术。
让它打印字符串“true”或“false”有点棘手。通常我会使用与@Inian相同的内容,但是使用它if ... then .. else ... fi
是因为我通常在以下代码下编写代码set -euo pipefail
:
if (( a == b )); then echo true; else echo false; fi
Run Code Online (Sandbox Code Playgroud)
但我们可以聪明地做一个数组:
to_bool[0]="false"
to_bool[1]="true"
echo ${to_bool[ a == b ]}
Run Code Online (Sandbox Code Playgroud)
但我认为与仅打印0
或没有什么区别1
。