Konvertieren einer Datums-/Zeitliste von GMT in PST

Konvertieren einer Datums-/Zeitliste von GMT in PST

Wenn ich den Befehl allein ausführe, scheint es einwandfrei zu funktionieren. Als Beispiel:

date --date='TZ="PST" Sun Jan 01 05:00:10 2017'

Sa, 31. Dez. 2016, 21:00:10 PST

Ich versuche jedoch, eine Eingabedatei mit einer Liste von Datums-/Zeitangaben zu verwenden, habe Probleme mit allen Anführungszeichen und kriege es einfach nicht hin. Meine Eingabedatei (Beispielname dates.input) sieht folgendermaßen aus:

$ cat dates.input 
Sun Jan 01 06:49:33 2017
Sun Jan 01 05:44:17 2017
Sun Jan 01 05:43:23 2017
Sun Jan 01 05:39:13 2017
Sun Jan 01 05:00:10 2017

Der Befehl, mit dem ich Probleme habe, ist:

while read i; do "date --date='TZ="PST" ${i}'"; done < dates.input

was gibt

bash: date --date='TZ=PST Sun Jan 01 06:49:33 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:44:17 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:43:23 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:39:13 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:00:10 2017': command not found...

Hat jemand Vorschläge, wie man das zum Laufen bringt?

Danke

Antwort1

Wählen wir als Beispiel diesen Wert für i:

$ i='Sun Jan 01 06:49:33 2017'

Lassen Sie uns nun den Befehl in Ihrer Schleife ausführen:

$ "date --date='TZ="PST" ${i}'"
bash: date --date='TZ=PST Sun Jan 01 06:49:33 2017': command not found

Wie man sieht, verwirrt das Setzen von Anführungszeichen um einen Befehl und seine Argumente die Shell. Versuchen Sie stattdessen:

$ date --date="TZ=\"PST\" ${i}"
Sat Dec 31 22:49:33 PST 2016

Das oben genannte ist erfolgreich.

Nachdem Sie diesen Befehl in die Schleife eingefügt haben, funktioniert die Schleife nun:

$ while read i; do date --date="TZ=\"PST\" ${i}"; done < dates.input
Sat Dec 31 22:49:33 PST 2016
Sat Dec 31 21:44:17 PST 2016
Sat Dec 31 21:43:23 PST 2016
Sat Dec 31 21:39:13 PST 2016
Sat Dec 31 21:00:10 PST 2016

verwandte Informationen