-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}참고: 텍스트에 철자 오류가 있는지 확인하면 그 이유와 아무것도 확장되지 않는 이유를 알 수 있습니다 .

관련 정보