Преобразование списка дат/времен от GMT до PST

Если я выполняю команду отдельно, это, кажется, хорошо работает. Как использование в качестве примера:

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

Суббота 31 декабря 21:00:10 PST 2016

Однако я пытаюсь использовать входной файл со списком дат/времен и имею проблемы со всеми кавычками и, может казаться, не получаю его работа. Мой входной файл (имя в качестве примера dates.input похоже:

$ 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

Команда, с которой у меня есть проблемы:

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

который дает

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

У кого-либо есть какие-либо предложения о том, как получить эту работу?

Спасибо

4
задан 12 March 2018 в 01:23

1 ответ

Как пример, давайте выберем это значение для i:

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

Теперь, давайте выполним команду в Вашем цикле:

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

Как каждый видит, помещение кавычек вокруг команды и ее аргументов путает оболочку. Попробуйте вместо этого:

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

Вышеупомянутое успешно выполняется.

После размещения этой команды в цикле теперь работает цикл:

$ 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
6
ответ дан 1 December 2019 в 09:20

Другие вопросы по тегам:

Похожие вопросы: