터미널에 이것을 입력하면
test 4 -lt 6
출력이 없습니다. 왜 안돼? 0 또는 1이 필요합니다
답변
종료 코드에서 0 또는 1을 얻습니다.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
업데이트 : 나중에 사용하기 위해 종료 코드를 저장하려면 변수에 할당하십시오.
bash-4.2$ test 4 -lt 6
bash-4.2$ first=$?
bash-4.2$ test 4 -gt 6
bash-4.2$ second=$?
bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1
답변
다른 방법은
test 4 -lt 6 && echo 1 || echo 0
그러나이 경우주의하십시오. 만약 test
반환 성공과 echo 1
실패 echo 0
실행됩니다.
답변
종료 코드 대신 표준 출력에 대한 비교 결과를 원하는 경우 다음 expr(1)
명령을 사용할 수 있습니다 .
$ expr 4 '<=' 6
1
두 가지주의 사항 :
- 쉘 메타 문자와 충돌하는 많은 연산자를 인용해야 할 것입니다.
- 출력값은에 대한 리턴 코드와 반대입니다
test
.test
true (종료 코드의 표준)에 대해서는 0을 반환하지만expr
true에 대해서는 1을 인쇄합니다.
답변
다음 명령을 입력 할 수 있습니다.
echo $(test -e myFile.txt) $?