web-dev-qa-db-fra.com

Conversion de la liste des dates / heures de GMT en PST

Si je lance la commande elle-même, cela semble fonctionner correctement. Comme exemple en utilisant:

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

Samedi 31 21:00:10 PST 2016

Cependant, j'essaie d'utiliser un fichier d'entrée avec une liste de dates/heures et d'avoir des problèmes avec toutes les citations et n'arrive pas à le faire fonctionner. Mon fichier d’entrée (exemple le nom dates.input ressemble à ceci:

$ 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

La commande avec laquelle j'ai des problèmes est la suivante:

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

qui donne

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...

Quelqu'un a des suggestions sur la façon de faire fonctionner cela?

Merci

3
user1869428

À titre d'exemple, prenons cette valeur pour i:

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

Maintenant, exécutons la commande dans votre boucle:

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

Comme on peut le constater, le fait de mettre des guillemets autour d’une commande et de ses arguments perturbe le shell. Essayez plutôt:

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

Ce qui précède réussit.

Après avoir placé cette commande dans la boucle, la boucle fonctionne maintenant:

$ 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
5
John1024