Error de sintaxis: EOF en sustitución de comillas invertidas

2

He programado el siguiente trabajo cron:

root@alexus:~# crontab -l | grep ^\@hourly
@hourly     OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# cat /etc/issue.net 
Ubuntu 14.04.3 LTS
root@alexus:~# 

y aunque puedo ejecutar EXACTAMENTE el mismo trazador de líneas dentro del shell, cada vez que el trabajo se ejecuta a través de cron, recibo el siguiente correo electrónico:

Asunto: Cron OUT = `/ usr / lib / nagios / plugins / check_disk --include-type = ext4 --warning = 10 / bin / sh: 1: Error de sintaxis: EOF en sustitución de comillas invertidas

por línea de asunto, parece que %falta todo después de la señal.

¿Cómo escapo correctamente sin romper mi script?

alexus
fuente

Respuestas:

5

Tendrá que consultar su crontab(5)página de manual. Algunas implementaciones de cron se usarán %como una nueva línea en el campo de comando, por lo que puede pasar datos al comando en stdin

* * * * * >$HOME/cron.cat.out cat%hello%world

Entonces "cron.cat.out" contiene 2 líneas:

hello
world

Necesitarás

  • para escapar de tus signos de porcentaje
  • Recomiendo usar en $()lugar de backticks
  • Cite el "$OUT"- siempre cite sus variables a menos que necesite los efectos secundarios específicos de dejarlas sin comillas.
@hourly     OUT=$(/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10\% --critical=5\%) || echo "$OUT"
# ...................................................................................^..............^
Glenn Jackman
fuente