
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.