Bash

為什麼這些命令會產生不同的輸出?

  • July 4, 2016

我正在嘗試從一行文本中獲取 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

現在,如果我直接在日期呼叫中使用該日期字元串,我可以獲得 linux 時間戳

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

但是,如果我將命令的結果通過管道cut傳輸到date命令中,我會得到不同的結果

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

為什麼結果不一樣?

date --date -不接受標準輸入;試試吧date +"%s" --date "$(echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41)"。這將在子 shell 中執行您的字元串操作管道,並將其輸出用作date.

引用自:https://unix.stackexchange.com/questions/293848