
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.