역사적 test
으로이 명령은 처음에 존재했습니다 (최소한 1979 년 Unix Seventh Edition 까지 ). 이 연산자를 사용 =
하고 !=
문자열을 비교하고, -eq
, -ne
, -lt
숫자를 비교하는 등. 예를 들어, test 0 = 00
false이지만 test 0 -eq 00
true입니다. 이 구문이 선택된 이유를 잘 모르겠지만, 그것을 사용하지 않는 것이되었을 수도 <
와 >
쉘이 리디렉션 연산자로 분석 한 것이다. test
명령은 몇 년 후 또 다른 구문을 가지고 : [ … ]
동일합니다 test …
.
[[ … ]]
되는 내부 조건부 구문 <
및 >
인용없이 연산자로서 사용될 수는 KSH에 나중에 첨가 하였다. 이과의 호환성을 유지 [ … ]
가 동일한 연산자를 사용하지만, 추가되도록 <
하고 >
문자열을 비교하는 (예를 들어, [[ 9 > 10 ]]
하지만 [[ 9 -lt 10 ]]
). 자세한 내용은 단일 또는 이중 괄호 사용-bash를 참조하십시오.
1980 년대에 Korn 쉘에서 산술 표현은 test
명령 보다 늦게 나왔습니다 . 그들은 C 언어의 구문을 따랐으며, 이는 Unix 서클에서 매우 인기가있었습니다. 따라서 그들은 C의 연산자를 사용했습니다 : 평등, 동등 하지 않은 등.==
<=
Unix Seventh Edition에는 산술 표현식이 없지만 비교 연산자를 포함하여 정수 연산에 대해 C와 유사한 구문을 구현하는 expr
command 가 있습니다. 쉘 스크립트에서 문자 <
와 >
가지고는 예는, 쉘로부터 보호하기 위해 인용 수 if expr 1 \< 2; …
에 해당합니다 if test 1 -lt 2; …
. 쉘에 산술 표현식을 추가하면 expr
더 이상 사용 되지 않으므로 오늘날에는 잘 알려져 있지 않습니다.
sh 스크립트에서는 일반적으로 산술 표현식을 사용하여 정수 값을 계산하고 정수 [ … ]
를 비교합니다.
if [ "$((x + y))" -lt "$z" ]; then …
ksh, bash 또는 zsh 스크립트에서 ((…))
둘 다에 사용할 수 있습니다 .
if ((x + y < z)); then …
[[ … ]]
당신이 정수가 아닌 다른 일을 포함하는 조건문을 사용하려면 양식에 유용합니다.
= != < <= > >=
문자열을 비교하십시오 .1 -eq 01
하지만1 != 01
하고8 -lt 42
있지만8 > 42