Vraag Syntaxisfout: EOF in vervangende backquote


Ik heb de volgende cron-taak gepland:

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

en hoewel ik kan rennen PRECIES Dezelfde voering in de schaal, wanneer een opdracht via cron wordt uitgevoerd, krijg ik de volgende e-mail:

Onderwerp: Cron OUT = `/ usr / lib / nagios / plugins / check_disk   --include-type = ext4 --warning = 10 / bin / sh: 1: Syntaxisfout: EOF in vervangende backquote

per onderwerpregel lijkt het alsof alles erop volgt % teken ontbreekt.

Hoe kan ik er goed aan ontsnappen zonder mijn script te verbreken?


2
2017-11-10 17:37


oorsprong


Zien: askubuntu.com/a/637378/158442 - muru


antwoorden:


U moet uw controleren crontab(5) man pagina. Sommige implementaties van cron zullen gebruiken % als een nieuwe lijn in het commandoveld, zodat u gegevens kunt doorgeven aan de opdracht op stdin

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

Dan bevat "cron.cat.out" 2 regels:

hello
world

Je hebt nodig

  • om te ontsnappen aan uw procenttekens
  • Ik raad aan om te gebruiken $() in plaats van backticks
  • Citeer het "$OUT" - citeer altijd je variabelen tenzij je de specifieke neveneffecten nodig hebt om ze niet-geciteerd te laten.
@hourly     OUT=$(/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10\% --critical=5\%) || echo "$OUT"
# ...................................................................................^..............^

5
2017-11-10 19:34