Por que quando x = abc, [[$ x 123]] && echo yes || eco não retorna sim? [duplicado]

2

Eu entendo que é uma comparação de string, no entanto, eu não entendo como "abc" & "123" são comparados entre si. Obrigado antecipadamente!

    
por Ashlyn 11.02.2017 / 22:49

1 resposta

7

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
    
por 11.02.2017 / 23:21