Folgendes möchte ich automatisieren:
00 08 * * * psql -Uuser database < query.sql | mail [email protected] -s "query for `date +%Y-%m-%dZ%I:%M`"
Hier ist die Fehlermeldung:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Antworten:
Aus crontab (5) :
Fügen Sie einfach Backslashes vor% Zeichen hinzu:
quelle
Um das Problem zu beheben, geben Sie% Zeichen ein .
date +%Y-%m-%d
sollte seindate +\%Y-\%m-\%d
Leider ist diese Antwort etwas verspätet, aber es handelt sich nicht um PATH oder Backticks. Das Prozentzeichen '%' ist lediglich ein Sonderzeichen, mit dem in crontab-Einträgen eine NEWLINE oder eine STDIN angegeben wird .
Dies steht in Konflikt mit der Formatierungseingabe des
date
Befehls. Als solcher Befehl, der Folgendes enthält:date +%Y-%m-%d
wird interpretiert als:date Y- m- d
quelle
Ich hatte auch viele Probleme mit Backticks. Manchmal benötigen Sie mehr als ein Vorkommen von Anführungszeichen und Backticks. Ersetzen Sie sie einfach durch $ ().
Beispiel:
-Gilson Soares
quelle
Es hat nichts mit Backsticks zu tun. Eine schreckliche Sache ist, dass cron den PFAD NICHT sieht und Sie cron sagen MÜSSEN, "was PFAD ist?" immer und immer wieder in den Cron-Skripten.
Und ich bin dafür, den Befehl in eine Datei zu schreiben, anstatt ihn buchstäblich in der Cron-Zeile zu übergeben. Es ist viel eleganter zu haben
als
Diese Zeile kann in eine Datei, chmod + x-Datei, und in diese aufzurufende Datei gehen.
quelle