bash - “-eq”运算符对于双括号之间的字符串比较始终为真
问题描述
例如:
A="T"
if [[ $A -eq "M" ]]; then
echo "$A"
fi
这将始终回显T
。
解决方案
-eq
用于整数比较。[[
在and之间,如果(and ,等)]]
周围的操作数不是整数而是有效的变量名,bash 假定这些是变量并尝试(递归地)取消引用它们。在同样的上下文中,未设置/空变量的值被认为是零;所以,你基本上是在比较 0 和 0。看这个成绩单:-eq
-ne
-lt
$ unset A M T
$ A="T"
$ if [[ $A -eq "M" ]]; then
> echo "$A"
> fi
T
$
$ T="1"
$ A="T"
$ if [[ $A -eq "M" ]]; then
> echo "$A"
> fi
$
当T
被分配一个非零的数字时,它不再响起。
如需更多信息,请参阅:
- 条件构造§
[[..]]
, - 壳牌算术。
推荐阅读
- python - CPLEX 和 epgap
- python - 使用python从excel文件中提取信息和数据
- bash - 如何在 Docker Compose 中设置 uid 和 gid?
- typescript - 从 SomeType 中提取类型 T
- python - 导入 IO 报错
- ios - 是否可以使用 Core Graphics 绘制到单个通道?
- mongodb - 在 Mongoose/Express 上使用 Docker 获取 mongo bson 错误
- vmware - VMWare Esxi 主机的选择
- php - 如何在数据库中保存间隔持续时间
- csv - 如何在 D3 中汇总 .csv 的过滤数据?