Conversión de lista de fechas/horas de GMT a PST

Conversión de lista de fechas/horas de GMT a PST

Si ejecuto el comando solo, parece funcionar bien. Como ejemplo usando:

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

Sábado 31 de diciembre 21:00:10 PST 2016

Sin embargo, estoy intentando utilizar un archivo de entrada con una lista de fechas/horas y tengo problemas con todas las comillas y parece que no puedo hacerlo funcionar. Mi archivo de entrada (nombre de ejemplo fechas.entrada se ve así:

$ 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

El comando con el que tengo problemas es:

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

lo que da

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

¿Alguien tiene alguna sugerencia sobre cómo hacer que esto funcione?

Gracias

Respuesta1

Como ejemplo, elijamos este valor para i:

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

Ahora, ejecutemos el comando en su bucle:

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

Como se puede ver, poner comillas alrededor de un comando y sus argumentos confunde al shell. Pruebe en su lugar:

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

Lo anterior tiene éxito.

Después de colocar este comando dentro del bucle, el bucle ahora funciona:

$ 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

información relacionada