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代码,前者(当启用区域设置时使用)执行更具体的比较,适合于在给定的区域设置中进行排序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容