역사적 test으로이 명령은 처음에 존재했습니다 (최소한 1979 년 Unix Seventh Edition 까지 ). 이 연산자를 사용 =하고 !=문자열을 비교하고, -eq, -ne, -lt숫자를 비교하는 등. 예를 들어, test 0 = 00false이지만 test 0 -eq 00true입니다. 이 구문이 선택된 이유를 잘 모르겠지만, 그것을 사용하지 않는 것이되었을 수도 <와 >쉘이 리디렉션 연산자로 분석 한 것이다. test명령은 몇 년 후 또 다른 구문을 가지고 : [ … ]동일합니다 test ….
[[ … ]]되는 내부 조건부 구문 <및 >인용없이 연산자로서 사용될 수는 KSH에 나중에 첨가 하였다. 이과의 호환성을 유지 [ … ]가 동일한 연산자를 사용하지만, 추가되도록 <하고 >문자열을 비교하는 (예를 들어, [[ 9 > 10 ]]하지만 [[ 9 -lt 10 ]]). 자세한 내용은 단일 또는 이중 괄호 사용-bash를 참조하십시오.
1980 년대에 Korn 쉘에서 산술 표현은 test명령 보다 늦게 나왔습니다 . 그들은 C 언어의 구문을 따랐으며, 이는 Unix 서클에서 매우 인기가있었습니다. 따라서 그들은 C의 연산자를 사용했습니다 : 평등, 동등 하지 않은 등.==<=
Unix Seventh Edition에는 산술 표현식이 없지만 비교 연산자를 포함하여 정수 연산에 대해 C와 유사한 구문을 구현하는 exprcommand 가 있습니다. 쉘 스크립트에서 문자 <와 >가지고는 예는, 쉘로부터 보호하기 위해 인용 수 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