명령 자체를 실행하면 제대로 작동하는 것 같습니다. 다음을 사용하는 예:
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