날짜/시간 목록을 GMT에서 PST로 변환

날짜/시간 목록을 GMT에서 PST로 변환

명령 자체를 실행하면 제대로 작동하는 것 같습니다. 다음을 사용하는 예:

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

2016년 12월 31일 토요일 21:00:10 PST

그러나 날짜/시간 목록이 포함된 입력 파일을 사용하려고 하는데 모든 인용문에 문제가 있어서 제대로 작동하지 않는 것 같습니다. 내 입력 파일(예제 이름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...

이 작업을 수행하는 방법에 대한 제안이 있는 사람이 있습니까?

감사해요

답변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

관련 정보