加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash – 测试一个字符串是否比另一个字符串“更大” – 它在内部

发布时间:2020-12-15 18:49:35 所属栏目:安全 来源:网络整理
导读:在 Bash中,我可以写下面的测试 [[ "f" "a" ]] 这导致返回0,即true. bash如何实际执行此字符串比较?从我的理解做一个整数比较.是否尝试比较操作数的ASCII值? 从帮助测试: STRING1 STRING2 True if STRING1 sorts after STRING2 lexicographically. 在内部,
在 Bash中,我可以写下面的测试
[[ "f" > "a" ]]

这导致返回0,即true. bash如何实际执行此字符串比较?从我的理解>做一个整数比较.是否尝试比较操作数的ASCII值?

从帮助测试:
STRING1 > STRING2
                 True if STRING1 sorts after STRING2 lexicographically.

在内部,bash或者使用strcoll()或strcmp():

else if ((op[0] == '>' || op[0] == '<') && op[1] == '')
  {
    if (shell_compatibility_level > 40 && flags & TEST_LOCALE)
      return ((op[0] == '>') ? (strcoll (arg1,arg2) > 0) : (strcoll (arg1,arg2) < 0));
    else
      return ((op[0] == '>') ? (strcmp (arg1,arg2) > 0) : (strcmp (arg1,arg2) < 0));
  }

后者实际上比较了ASCII代码,前者(当启用区域设置时使用)执行更具体的比较,适合于在给定的区域设置中进行排序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读