터미널에 이것을 입력하면
test 4 -lt 6
나는 어떤 결과도 얻지 못한다. 왜 안 돼? 0이나 1이 필요해요
답변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
답변2
또 다른 방법은
test 4 -lt 6 && echo 1 || echo 0
하지만 이 경우에는 조심하세요. test
성공이 반환 되면 실행이 실패합니다 echo 1
.echo 0
답변3
종료 코드 대신 표준 출력으로 비교 결과를 보려면 다음 expr(1)
명령을 사용할 수 있습니다.
$ expr 4 '<=' 6
1
두 가지 점에 유의해야 합니다.
- 많은 부분이 쉘 메타 문자와 충돌하므로 인용 연산자가 필요할 수 있습니다.
- 출력 값은 반환 코드와 반대입니다
test
.test
0을 반환하면 true(종료 코드의 표준)를 의미하지만expr
1을 인쇄하면 true를 의미합니다.
답변4
다음 명령을 입력할 수 있습니다.
echo $(test -e myFile.txt) $?