请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

双方括号的问题···

#!/bin/bash
a=$1
b=$2
c=$3
if [[ $a > $b && $b < $c ]];then
echo yes
else
echo no
fi

sh test.sh 12 5 8

输出no的原因是什么??大哥······

正在回答 回答被采纳积分+3

1回答

酷田 2021-05-31 21:43:47

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

https://img1.sycdn.imooc.com//szimg/60b4e7c5093823cb06400508.jpg

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


您的问题也是有这样的问题,更换成  [ $a -gt $b] && [ $b -lt $c ]即可,视频中内容有误

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信