이러한 명령이 다른 출력을 생성하는 이유는 무엇입니까?

이러한 명령이 다른 출력을 생성하는 이유는 무엇입니까?

텍스트 줄에서 Linux 타임스탬프를 얻으려고 합니다. 명령을 사용하여 cut문자열을 잡을 수 있습니다

> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41
2016-07-04T01:42:28Z

이제 date를 호출할 때 해당 날짜 문자열을 직접 사용하면 Linux 타임스탬프를 얻을 수 있습니다.

> date +"%s" --date 2016-07-04T01:42:28Z
1467596548

그러나 명령 결과를 command 에 파이프하면 다른 결과가 나타납니다 cut.date

> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41 | date +"%s" --date -
1467590400

결과가 다른 이유는 무엇입니까?

답변1

date --date -표준 입력을 허용하지 않습니다. date +"%s" --date "$(echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41)"이것을 시도해 보십시오. 이것은 서브쉘에서 문자열 조작 파이프를 실행하고 그 출력을 date.

관련 정보