关于双方括号

来源:3-9 if-then中使用双方括号

桃花心木521

2021-04-04

a=$1
b=$2
c=$3
d=100

if [[ $a < $d ]]; then
echo 'ok’
else
echo 'fail’
fi

输出
[root@hecs-x-medium-2-linux-20210323090006 tmp]# sh -x contdition 12 32 33

  • a=12
  • b=32
  • c=33
  • d=100
  • [[ 12 < 100 ]]
  • echo fail
    fail
    这是啥原因呢
写回答

1回答

酷田

2021-04-13

同学,您好,我今天看了一下这个问题,发现在[[ ]]中使用>或<进行比较时,存在问题,今天重新翻看了一下double_square_bracket.sh脚本内容,发现是下面这样的

//img.mukewang.com/szimg/60753cb709f9629006390514.jpg

我尝试了你的内容,的确无法得到预期结果;我后来专门翻了资料, 发现在双方括号中如果使用>和<进行数值比较是由问题的,因此会把数字当成字符串来做比较,会首先比较首个数字的ASCII码,然后对比大小,如果首个数字相同,在继续比较后面第二个数字,非常感谢同学提出的问题

课程中内容有误,感谢同学指正

0
0

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1639 学习 · 297 问题

查看课程