Linux shell中如何比较两个字符串的大小?

比较代码如下

#!/bin/bash
# mis-using string comparisons
#
val1=baseball
val2=hockey
#
if [ $val1 \> $val2 ]
then
        echo "$val1 is greater than $val2"
else
        echo "$val1 is less than $val2"
fi

运行结果是
baseball is less than hockey

但是我的直觉是,‘baseball’长度比‘hockey’大,所以结果应该是‘baseball is greater than hockey’。
不知道Linux shell是如何比较两个字符串的大小?
求大神解答?

2个回答

你比较的是字符串,而不是字符串的长度
字符串的比较遵循字典顺序,规则如下:
如果第一个字符串是第二个的前缀,那么第一个小,比如a小于about
从字符串的开头比较,按照字母顺序,a比b小,比如about小于ball
如果第一个字符相同,再比较第二个,比如about小于above
总之,如果你查字典,字典排在前面的单词比后面的小。
所以baseball比hockey小。

字符串没有比较大小的只有比较是否相等

if [ $val1 == $val2 ];then
echo
else
echo
fi
数字比较大小 -eq -gt -ge -lt -le

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问