"a" ]] 结果为0,即返回true。 bash实际上如何执行此字符串比较?根据我的理解,>进行了整数比较。是否尝试比较操作数的ASCII值? 最-6ren">
gpt4 book ai didi

bash - 在Bash中如何测试一个字符串是否比另一个字符串 'greater'有效?

转载 作者:行者123 更新时间:2023-12-03 08:33:18 26 4
gpt4 key购买 nike

在Bash中,我可以编写以下测试

[[ "f" > "a" ]]

结果为0,即返回true。 bash实际上如何执行此字符串比较?根据我的理解, >进行了整数比较。是否尝试比较操作数的ASCII值?

最佳答案

help test:

  STRING1 > STRING2
True if STRING1 sorts after STRING2 lexicographically.

在内部,bash为此使用 strcoll()strcmp():
else if ((op[0] == '>' || op[0] == '<') && op[1] == '\0')
{
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码,前者(启用语言环境时使用)执行更特定的比较,该比较适合于在给定的语言环境中进行排序。

关于bash - 在Bash中如何测试一个字符串是否比另一个字符串 'greater'有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64744728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com