![-gt: 코드를 실행할 때 단항 연산자에 대해 예상되는 메시지 [닫기]](https://linux55.com/image/164608/-gt%3A%20%EC%BD%94%EB%93%9C%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%20%EB%8B%A8%ED%95%AD%20%EC%97%B0%EC%82%B0%EC%9E%90%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%98%88%EC%83%81%EB%90%98%EB%8A%94%20%EB%A9%94%EC%8B%9C%EC%A7%80%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
다음 코드를 실행할 때:
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}
참고: 텍스트에 철자 오류가 있는지 확인하면 그 이유와 아무것도 확장되지 않는 이유를 알 수 있습니다 .