Datum zum Zeitpunkt "at" auswerten

317
Ould Abba

Ich verwende eine Skriptdatei, um einige Aufgaben mit dem AT-Befehl auszuführen. In der Protokolldatei wird jedoch das Datum angezeigt, an dem der AT-Befehl eingerichtet wurde, nicht das Ausführungsdatum.

Was kann ich tun, um die tatsächliche Ausführungszeit anzuzeigen?

Dies ist mein Inhalt der Skriptdatei:

logFILE="/tmp/loggfile.log"  if [[ -z "$1" ]]; then echo "Please specify the run time, HH:MM "; exit 1; fi runTIME=$1  at $runTIME <<< " echo 'Running a task....' echo 'An other task....' echo 'END : (`date '+%H:%M'`)' >>$logFILE " echo "The command was scheduled to run at $runTIME" 

Wenn ich es um 16:00 Uhr mit ausführe ./script.sh 23:20, wird die Aufgabe um 23:20 ausgeführt, aber in der Protokolldatei bekomme ich esEND : (16:00)

Jede Hilfe wird geschätzt.

0

1 Antwort auf die Frage

0
Kamil Maciorowski

datewird ausgeführt, wenn das Skript ausgeführt wird, da die `…`Syntax in Anführungszeichen steht. Es ist auch in inneren einfachen Anführungszeichen, aber die äußersten Anführungszeichen zählen. Das Ergebnis ist atnicht "sehen", `date …`sondern seine Ausgabe.

Äußere Anführungszeichen einfach, innere Anführungszeichen doppelt machen. atwird die gesamte Zeichenfolge erhalten, wie sie ist. Wenn die Zeit reif ist, läuft shsie `date …`in doppelten Anführungszeichen und wird nur dann dateausgewertet:

at "$runTIME" <<< ' echo "Running a task...." echo "An other task...." echo "END : (`date +%H:%M`)" >>"$logFILE" ' 

Hinweis Ich habe die meisten einfachen Anführungszeichen ( '+%H:%M') gelöscht . In meiner Version würden sie verschwinden, während sie die Saite übergeben at; Der Code funktioniert auch ohne sie.