-gt: mensagem esperada do operador unário ao executar o código

-gt: mensagem esperada do operador unário ao executar o código

Ao executar o seguinte código:

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

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

Eu recebo a seguinte mensagem

line 12: [: -gt: unary operator expected

A linha 12 refere-se à linha

if [ ${DEAD_PROCESS_STATE} -gt 0 ]

Não tenho certeza de qual poderia ser o problema, tentei colocar o zero entre aspas simples, mas ainda não funcionou. Alguém consegue ver onde pode estar o erro? o código ainda é executado e envia os alertas de e-mail corretos que defini, etc., estou apenas curioso para saber o que está causando o aparecimento desta mensagem.

Responder1

Você usa a seguinte linha de comando:

if [ -gt 0 ]

já que ${PROCESS_STATE} se expande para nada porque é uma variável não inicializada.

Por esse motivo, é recomendado usar algo como:

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

para ter certeza de usar o número certo de argumentos.

BTW: Verifique se há erros de digitação no seu texto e você descobrirá o motivo, por que ${PROCESS_STATE}se expande para nada.

informação relacionada