Errore di sintassi: EOF nella sostituzione del backquote

2

Ho programmato il seguente cron job:

[email protected]:~# 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
[email protected]:~# OUT='/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%' ; if [ $? != 0 ] ; then echo $OUT ; fi
[email protected]:~# cat /etc/issue.net 
Ubuntu 14.04.3 LTS
[email protected]:~# 

e anche se sono in grado di eseguire ESATTAMENTE lo stesso rivestimento nella shell, ogni volta che il lavoro viene eseguito tramite cron, ricevo la seguente email:

  

Oggetto: Cron OUT = '/ usr / lib / nagios / plugins / check_disk   --include-type = ext4 --warning = 10 / bin / sh: 1: Errore di sintassi: EOF nella sostituzione del backquote

per riga dell'oggetto, sembra che tutto ciò che manca al segno % sia mancante.

Come faccio a fuggire correttamente senza rompere il mio script?

    
posta alexus 10.11.2015 - 18:37

1 risposta

5

Dovrai controllare la tua pagina man di crontab(5) . Alcune implementazioni di cron useranno % come newline nel campo comando, quindi puoi passare i dati al comando su stdin

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

Quindi "cron.cat.out" contiene 2 righe:

hello
world

Avrai bisogno di

  • per sfuggire ai segni di percentuale
  • ti consiglio di utilizzare $() anziché i backtick
  • Cita il "$OUT" - cita sempre le tue variabili a meno che tu non abbia bisogno degli effetti collaterali specifici di lasciarle non quotate.
@hourly     OUT=$(/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10\% --critical=5\%) || echo "$OUT"
# ...................................................................................^..............^
    
risposta data glenn jackman 10.11.2015 - 20:34

Leggi altre domande sui tag