Isso porque, dentro de [[…]]
, os operadores < e > comparação de string.
Ao fazer uma comparação de string, a ordem é dada (basicamente) pelo alfabeto, onde a é antes (menor) que b e menor que c: a < b < c
.
Os números são geralmente anteriores a (menores) que as letras: 1 < 2 < a
Portanto, como um a
classifica após um 1
abc
ser maior que 123
:
$ [[ abc > 123 ]] && echo yes
yes
Ou, como você a apresenta:
$ x=abc y=123
$ [[ $x > $y ]] && echo yes
yes