linux中shell比较2个数大小
#!/bin/sh
#输入2个数a,b
read a
read b
if [ a > b ]
then
echo "a=$a"
echo "b=$b"
echo "a>b"
else
echo "a<b"
输入3,4或者输入4,3
为什么,都不会输入a<b
------解决方案-------------------- 数字比较大小用
-eq
-gt
-lt
-le
-ge
>表示重定向,你输入3,4的时候,当前目录会多一个文件"4",输入4,3的时候,会多一个文件"3"。
------解决方案-------------------- 如果要比较数值大小if [ a > b ],应该是$a和$b,而且[]中没有>比大小的作用,[] 改成[[]],或者使用-gt , -lt
------解决方案-------------------- 规则问题,Linux中定义 < >为输入输出重定向,数字大小的比较为 -eq 等于;-gt 大于;-lt 小于;-le 小于等于;-ge 大于等于;-ne 不等于。比较中读入的变量应为 $a,$b,if [ $a -gt $b ]。
------解决方案-------------------- 引用: 如果要比较数值大小if [ a > b ],应该是$a和$b,而且[]中没有>比大小的作用,[] 改成[[]],或者使用-gt , -lt
补充一下:
[]里面是可以用>的,只不过需要转义。(而且它是字符串比较,不是数值比较。)
[root@ ~]# [ a \> b ] && echo yes
------解决方案-------------------- echo no
no
[root@ ~]# [ c \> b ] && echo yes
------解决方案-------------------- echo no
yes