[ $v1 \> $v2 ] 输出结果相反
来源:3-5 条件测试-字符串比较

瓜皮壹号
2021-06-11
老师您看一下,这结果是相反的,为什么呢?
root@host7-201[11:06:27]:~# cat 1.sh
v1="10"
v2="9"
if [ $v1 \> $v2 ];then
echo "10大于9"
else
echo "10小于9"
fi
root@host7-201[11:06:45]:~# sh -x 1.sh
+ v1=10
+ v2=9
+ '[' 10 '>' 9 ']'
+ echo 10小于9
10小于9
///////////////////////////////////////////////////////////
root@host7-201[11:06:54]:~# vi 1.sh
root@host7-201[11:07:07]:~# cat 1.sh
v1="10"
v2="9"
if [ $v1 \< $v2 ];then
echo "10大于9"
else
echo "10小于9"
fi
root@host7-201[11:07:09]:~# sh -x 1.sh
+ v1=10
+ v2=9
+ '[' 10 '<' 9 ']'
+ echo 10大于9
10大于9
root@host7-201[11:07:11]:~#
写回答
1回答
-
酷田
2021-06-14
同学您好,我尝试了你的内容,的确无法得到预期结果;查了资料, 发现在方括号中如果使用>和<进行数值比较是由问题的,因此会把数字当成字符串来做比较,会首先比较首个数字的ASCII码,然后对比大小,如果首个数字相同,在继续比较后面第二个数字,非常感谢同学提出的问题
这个知识点是有误的,感谢提出;比较大小还是使用-gt、-lt、-eq、-ne把,大小于号慎用
10
相似问题