有人可以解释“ if ” bash 块的以下行为吗?我使用以下简单代码检查 first_value 是否小于 second_value first_value=67second_value=2if [[ "${first_value}" < "${second_value}" ]];then echo "Yes"else echo "No"fi问题是如果 second_value 是 1,2,3,4,5,6,10,11,... 该块将返回“否”但是如果 second_value 是 7,8,9 块将返回"is"(必须是“否”)解决方法是使用“ -lt ”而不是“ ”,但我想了解“ if ”块的这种行为。bash 版本是“GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)”操作系统是“CentOS Linux release 7.5.1804 (Core)” 最佳答案 至于您的问题:首先, if 块不返回任何内容。它只是执行一组语句或另一组语句,在您的情况下,这些语句会向 stdout 写入一些内容。现在解释您所观察到的行为。[[ ... ]] 表达式中的 [[ 67 < 7 ]]"67"在词法上小于 "7",因此 [[ .... ]] 返回状态代码 0,这意味着 if 正在执行 then 部分,这会导致 Yes 被打印。关于bash - 为什么 bash 以字典顺序而不是数字方式评估数字的比较?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58852972/