you_21939 2019-09-15 16:21 采纳率: 0%
浏览 2851

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条回答

  • threenewbee 2019-09-15 22:41
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包