Se eu executar o comando sozinho, ele parece estar funcionando bem. Como exemplo usando:
date --date='TZ="PST" Sun Jan 01 05:00:10 2017'
Sábado, 31 de dezembro, 21:00:10 PST de 2016
No entanto, estou tentando usar um arquivo de entrada com uma lista de datas/horas e tendo problemas com todas as cotações e não consigo fazê-lo funcionar. Meu arquivo de entrada (nome de exemplo datas.input se parece com:
$ 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
O comando com o qual estou tendo problemas é:
while read i; do "date --date='TZ="PST" ${i}'"; done < dates.input
que dá
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...
Alguém tem alguma sugestão sobre como fazer isso funcionar?
Obrigado
Responder1
Como exemplo, vamos escolher este valor para i
:
$ i='Sun Jan 01 06:49:33 2017'
Agora, vamos executar o comando no seu loop:
$ "date --date='TZ="PST" ${i}'"
bash: date --date='TZ=PST Sun Jan 01 06:49:33 2017': command not found
Como podemos ver, colocar um comando e seus argumentos entre aspas confunde o shell. Em vez disso, tente:
$ date --date="TZ=\"PST\" ${i}"
Sat Dec 31 22:49:33 PST 2016
O procedimento acima foi bem-sucedido.
Depois de colocar este comando dentro do loop, o loop agora 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