(九)shell之test [[]]命令

==、>、< 在大部分编程语言中都用来比较数字,而在 Shell 中,它们只能用来比较字符串,不能比较数字
其次,不管是比较数字还是字符串,Shell 都不支持 >= 和 <= 运算符,

那么在shell中,数值和字符串的比较是怎样的?

(1)数值比较
  -gt : >
  -lt : <

  -ge : >=
  -le : <=

  -eq : 是否相等
  -ne : 是否不相等

(2)字符串比较
  -z str : 是否为空
  -n str : 是否为非空

  str1=str2   str1==str2 : 是否相等
  str1!=str2 : 是否不相等

  str1>str2 : 是否大于
  str1<str2 : 是否小于

 

[[]] 命令

  • test 与 [[]] 类似,检测某个条件是否成立 
  • [[]] 是 test的升级版本 
  • [[ condition ]] , condition两边都是有空格 
  • 条件成立时,退出状态为0, exit:0 成功 非0 失败
  • [[]]可以不使用-o -a选项,直接用|| &&, 总体来说,[[]]比test更趋于正常编程
  • 支持正则表达式 [[ str=~regex ]]
  • 与test的区别是,test限制的事项,[[]]不必限制
  1. 不需要把变量名用""包围起来,即便是空,也不会报错
  2. 不可以对>,<转义
 10 
if [[ -z $a ]] || [[ -z $b ]]
then
        echo "不能为空"
elif [[ $a<$b ]]
then
        echo "a小于b"
else
        echo "a大于b"
fi

#test写法

read t1
read t2
if test -z $t1 || test -z $t2 
then
        echo "t1 或 t2 为空"
elif test $t1 < $t2 #等同于 $t1 -lt $t2
then
        echo "t1小于t2"
else
        echo "t1大于t2"
fi 

详情参考: http://c.biancheng.net/view/2742.html

做一个优秀的程序媛
原文地址:https://www.cnblogs.com/oytt/p/13491527.html