Unix의 테스트 명령이 출력을 인쇄하지 않습니다.

Unix의 테스트 명령이 출력을 인쇄하지 않습니다.

터미널에 이것을 입력하면

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

두 가지 점에 유의해야 합니다.

  1. 많은 부분이 쉘 메타 문자와 충돌하므로 인용 연산자가 필요할 수 있습니다.
  2. 출력 값은 반환 코드와 반대입니다 test. test0을 반환하면 true(종료 코드의 표준)를 의미하지만 expr1을 인쇄하면 true를 의미합니다.

답변4

다음 명령을 입력할 수 있습니다.

echo $(test -e myFile.txt) $?

관련 정보