bash中的变量并不是强类型的,整数比较和字符串比较之间存在一些模糊的地方,所以bash中使用不同的操作符来比较整数和字符串。
整数比较
- 使用双括号检查结果,即
(( ... ))
,只在bash 2.04以及之后的版本中可用
字符串比较
空值检测
bash中检查变量是否为空(即字符串长度是否为0),-n
检查非空为真,-z
检查空为真
复合比较
注意:在某些复合比较中,即使圈引了变量也是不够的,[ -n "$string" -o "$a" = "$b" ]
,如果$string
为空,则可能在某些版本的bash中导致错误发生。安全的方式应该是给可能为空的变量附加一个额外的字符[ "x$string" != x -o "x$a" = "x$b" ]
。