-gt: mensaje esperado del operador unario al ejecutar el código

-gt: mensaje esperado del operador unario al ejecutar el código

Al ejecutar el siguiente código:

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

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

me sale el siguiente mensaje

line 12: [: -gt: unary operator expected

La línea 12 se refiere a la línea

if [ ${DEAD_PROCESS_STATE} -gt 0 ]

No estoy seguro de cuál podría ser el problema. Intenté poner el cero entre comillas simples pero aún así no funciona. ¿Alguien puede ver dónde podría estar el error? el código aún se ejecuta y envía las alertas de correo electrónico correctas que configuré, etc. Solo tengo curiosidad por saber qué está causando que aparezca este mensaje.

Respuesta1

Utiliza la siguiente línea de comando:

if [ -gt 0 ]

ya que ${PROCESS_STATE} se expande a nada porque es una variable no inicializada.

Por este motivo, se recomienda utilizar algo como:

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

para asegurarse de utilizar la cantidad correcta de argumentos.

Por cierto: revise su texto en busca de errores tipográficos y descubrirá la razón por la cual ${PROCESS_STATE}se expande a nada.

información relacionada