Erro de sintaxe: EOF na substituição de backquote

2

Eu programei após o cron job:

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:~# 

e mesmo que eu seja capaz de executar EXATAMENTE o mesmo liner dentro do shell, sempre que o job for executado via cron, recebo o seguinte email:

  

Assunto: Cron OUT = '/ usr / lib / nagios / plugins / check_disk   --include-type = ext4 --warning = 10 / bin / sh: 1: Erro de sintaxe: EOF na substituição de backquote

por linha de assunto, parece que tudo após a falta do sinal % .

Como faço para escapar dela sem quebrar meu roteiro?

    
por alexus 10.11.2015 / 18:37

1 resposta

5

Você precisará verificar sua página crontab(5) man. Algumas implementações do cron usarão % como uma nova linha no campo de comando, assim você pode passar dados para o comando em stdin

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

Em seguida, "cron.cat.out" contém 2 linhas:

hello
world

Você precisará de

  • para escapar dos seus sinais de porcentagem
  • Eu recomendo usar $() em vez de backticks
  • Cite o "$OUT" - sempre citam suas variáveis a menos que você precise dos efeitos colaterais específicos de deixá-las sem aspas.
@hourly     OUT=$(/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10\% --critical=5\%) || echo "$OUT"
# ...................................................................................^..............^
    
por glenn jackman 10.11.2015 / 20:34