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