我有个问题
a=1
b=2
我想要一个变量的比较输出。即在 Windows 语言中,您可以编写这样的内容。它应该打印
false
print ($a == $b)
在控制台中尝试以下这些。
echo $a -eq $b
echo (( $a -eq $b ))
echo "$a" -eq "$b"
c= $(expr "$a" -eq "$b" )
echo $c
最佳答案
您可以使用算术扩展。
echo $(( a == b ))
如果表达式为真,这将打印 1,如果表达式为假,则打印 0。无需添加
$
在变量名前,可以像C语言一样使用运算符,空格可以省略。见 Bash reference manual:Shell arithmetic了解更多信息。让它打印字符串“true”或“false”有点棘手。通常我和@Inian 一样,但使用
if ... then .. else ... fi
因为我通常在 set -euo pipefail
下编码:if (( a == b )); then echo true; else echo false; fi
但我们可以聪明一点,做一个数组:
to_bool[0]="false"
to_bool[1]="true"
echo ${to_bool[$(( a == b ))]}
但我看不出有什么区别,然后只打印
0
或 1
.
关于bash - 在 bash 中将比较输出打印为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477272/