shell条件判断


原文链接: shell条件判断

value 数值比较

-eq 等于 if [ "$a" -eq "$b" ]
-ne 不等于 if [ "$a" -ne "$b" ]
-gt 大于 if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt 小于 if [ "$a" -lt "$b" ]
-le 小于等于 if [ "$a" -le "$b" ]
< 小于(使用 双圆括号)(("$a" < "$b"))
<= 小于等于(使用双圆括号)(("$a" <= "$b"))

大于(使用双圆括号)(("$a" > "$b"))
= 大于等于(使用双圆括号) (("$a" >= "$b"))

string 字符串比较

等于

if [ "$a" = "$b" ] 注意: 在 = 前后要加上空格
if [ "$a" == "$b" ] 和 = 同义
if [ "$a"="$b" ] 和上面不等价,是赋值,永远为真

注意: == 操作符在 双方括号 和单方括号里的功能是不同的。
[[ $a == z* ]] # $a 以 "z" 开头时为真(模式匹配)
[[ $a == "z" ]] # $a 等于 z 时为真(字符匹配)

[ $a == z* ] # 发生文件匹配和字符分割。
[ "$a" == "z" ] # $a 等于 z 时为真(字符匹配)

不等于

if [ "$a" != "$b" ]
在 [[ ... ]] 结构中会进行模式匹配。

小于,按照 ASCII码 排序。

if [[ "$a" < "$b" ]]
if [ "$a" < "$b" ]

注意在 [] 结构里 < 需要被 转义。

大于,按照 ASCII 码排序。

if [[ "$a" > "$b" ]]
if [ "$a" > "$b" ]

注意在 [] 结构里 > 需要被转义。

-z 字符串为空,即字符串长度为0。

String=''   # 长度为0的字符串变量。

if [ -z "$String" ]
then
  echo "\$String is null."
else
  echo "\$String is NOT null."
fi     # $String is null.

-n 字符串非空(null)

使用 -n 时字符串必须是在括号中且被引用的。
使用 ! -z 判断未引用的字符串或者直接判断(样例 7-6)通常可行,但是非常危险。判断字符串时一定要引用1。

`