Je veux créer un fichier journal pour un script cron qui a l'heure actuelle dans le nom du fichier journal. Voici la commande que j'ai essayé d'utiliser :
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Malheureusement, je reçois ce message lorsque cela s'exécute :
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
J'ai essayé d'échapper à la date
partie de diverses manières, mais sans beaucoup de chance. Est-il possible de faire en sorte que cela se produise en ligne dans un fichier crontab ou dois-je créer un script shell pour ce faire ?
Réponse acceptée :
Réponse courte :
Échappez au %
comme %
:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Réponse longue :
Le message d'erreur suggère que le shell qui exécute votre commande ne voit pas le deuxième caractère de retour arrière :
/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'
Ceci est également confirmé par le deuxième message d'erreur que vous avez reçu lorsque vous avez essayé l'une des autres réponses :
/bin/sh: -c: line 0: unexpected EOF while looking for matching ')'
La page de manuel crontab confirme que la commande est en lecture seule jusqu'au premier %
non échappé signe :
Le "sixième" champ (le reste de la ligne) spécifie la commande à
exécuter. La totalité de la partie commande de la ligne, jusqu'à une nouvelle ligne ou%
caractère, sera exécuté par/bin/sh
ou par le shell spécifié dans
leSHELL
variable du cronfile. Signes pourcentage (%
) dans le commande, sauf si elle est échappée avec une barre oblique inverse (), sera changé en caractères de nouvelle ligne , et toutes les données après le premier
%
sera envoyé à
la commande en tant qu'entrée standard.