比较代码如下
#!/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是如何比较两个字符串的大小?
求大神解答?
你比较的是字符串,而不是字符串的长度
字符串的比较遵循字典顺序,规则如下:
如果第一个字符串是第二个的前缀,那么第一个小,比如a小于about
从字符串的开头比较,按照字母顺序,a比b小,比如about小于ball
如果第一个字符相同,再比较第二个,比如about小于above
总之,如果你查字典,字典排在前面的单词比后面的小。
所以baseball比hockey小。
字符串没有比较大小的只有比较是否相等
if [ $val1 == $val2 ];then
echo
else
echo
fi
数字比较大小 -eq -gt -ge -lt -le