怎么当x=abc, [[ $x > 123 ]] && echo yes || echo no 返回 yes?

怎么当x=abc, [[ $x > 123 ]] && echo yes || echo no 返回 yes?

我知道这是一个字符串比较,但是我不明白“abc”和“123”如何相互比较。提前致谢!

答案1

这是因为,在 内部[[…]],运算符 < 和 > 进行字符串比较。

在进行字符串比较时,顺序(基本上)由字母表给出,其中 a 比 b 早(小)且比 c: 小a < b < c
数字通常位于字母之前(小于字母):1 < 2 < a

因此,作为aa1 abc大于后的排序123

$ [[ abc > 123 ]] && echo yes
yes

或者,正如您所介绍的:

$ x=abc    y=123
$ [[ $x > $y ]] && echo yes
yes

相关内容