==、>、< 在大部分编程语言中都用来比较数字,而在 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限制的事项,[[]]不必限制
- 不需要把变量名用""包围起来,即便是空,也不会报错
- 不可以对>,<转义
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