test[]를 사용하여 반환 코드를 캡처하세요.

test[]를 사용하여 반환 코드를 캡처하세요.

이것을 실행하면:

#!/usr/bin/env bash

simple_return_zero(){
  return 0;
}

simple_return_one(){
  return 1;
}

if [ simple_return_zero ]; then
   echo "we have 0000";
fi

if [ ! simple_return_zero ]; then
   echo "we have not 00000";
fi

if [ simple_return_one ]; then
   echo "we have 11111";
fi

if [ ! simple_return_one ]; then
   echo "we have not 11111";
fi

나는 얻다:

we have 0000
we have 11111

위의 코드가 잘못되었다는 것을 알고 있습니다. 이것이 올바른 방법이라고 생각합니다.

if simple_return_zero; then
   echo "we have 0000";
fi

if ! simple_return_zero; then
   echo "we have not 00000";
fi

if simple_return_one; then
   echo "we have 11111";
fi

if ! simple_return_one; then
   echo "we have not 11111";
fi

이제 우리는 훨씬 더 흥미로운 것을 얻습니다.

we have 0000
we have not 11111

내 질문은 - 이 경우 테스트 명령( [ ] )이 작동하지 않는 이유는 무엇입니까? 테스트 명령이 종료/반환 코드를 확인하지 않습니까? ? ?

답변1

테스트 명령이 종료/반환 코드를 확인하지 않습니까? ? ?

절대적으로하지.괄호 안의 텍스트로 정의된 테스트를 실행하며 해당 구문은 를 통해 볼 수 있습니다 help test.

if자체적으로 실행된 명령의 반환 코드를 확인합니다.

관련 정보