이것을 실행하면:
#!/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
자체적으로 실행된 명령의 반환 코드를 확인합니다.