나는 bash 스크립트를 작성하고 있었고 갑자기이 동작이 시작되었습니다.
[[ 1 < 2 ]]; echo $? # outputs 0
[[ 2 < 13 ]]; echo $? # outputs 1
그러나 제대로 -lt
작동합니다.
[[ 1 -lt 2 ]]; echo $? # outputs 0
[[ 2 -lt 13 ]]; echo $? # outputs 0
실수로 <
어떻게 든 덮어 썼 습니까?
다음은이 동작을 테스트하기 위해 작성한 스크립트입니다.
#!/bin/bash
for a in {1..5}
do
for b in {1..20}
do
[[ $a < $b ]] && echo $a $b
done
echo
done
출력은 다음과 같습니다.
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 20
3 4
3 5
3 6
3 7
3 8
3 9
4 5
4 6
4 7
4 8
4 9
5 6
5 7
5 8
5 9
변경 <
에 -lt
스크립트의 정상적인 출력 (범 5 10
방송 예컨대 업).
재부팅해도 아무런 변화가 없었습니다.
내 bash 버전은 GNU bash 버전 4.3.42 (1)-릴리스 (x86_64-pc-linux-gnu)입니다. 우분투 15.10에 있습니다. 다른 정보가 여기에 있는지 모르겠습니다.
<
작동, 당신은 반면, 문자열 비교를하고 있습니다-lt
연산자는 숫자 비교가 목록에 추가 한 결과를 보면, 당신이 그것을 알게 될 것이다. 숫자 2는 알파벳 순서로 10보다 작습니다.