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

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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题