-gt: 코드 실행 시 단항 연산자가 예상하는 메시지

-gt: 코드 실행 시 단항 연산자가 예상하는 메시지

다음 코드를 실행할 때:

DEAD_PROCESS_STATE=$(ps -o state | grep -i z | wc -l)

if [ ${DEAD_PROCESS_STATE} -gt 0 ]
then
     echo "..." 
else
     echo "..."
fi

다음 메시지가 나타납니다.

line 12: [: -gt: unary operator expected

12번째 줄은 다음 줄을 의미합니다.

if [ ${DEAD_PROCESS_STATE} -gt 0 ]

문제가 무엇인지 잘 모르겠습니다. 작은따옴표 안에 0을 넣으려고 했지만 여전히 작동하지 않습니다. 실수가 어디에 있는지 누가 알 수 있나요? 코드는 여전히 실행되고 내가 설정한 올바른 이메일 알림 등을 보냅니다. 이 메시지가 나타나는 원인이 무엇인지 궁금합니다.

답변1

다음 명령줄을 사용합니다.

if [ -gt 0 ]

${PROCESS_STATE}는 초기화되지 않은 변수이기 때문에 아무것도 확장되지 않기 때문입니다.

이러한 이유로 다음과 같은 것을 사용하는 것이 좋습니다.

if [ "${PROCESS_STATE}" -gt 0 ]

올바른 개수의 인수를 사용하는지 확인하세요.

참고: 텍스트에 오타가 있는지 확인하면 아무것도 아닌 것으로 확장되는 이유를 알 수 있습니다 ${PROCESS_STATE}.

관련 정보