
다음 코드를 실행할 때:
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}
.