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

따라서 aa 1 abc이후의 정렬은 다음보다 큽니다 123.

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

또는 당신이 말했듯이 :

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

관련 정보