为什么没有正确处理日期命令的管道参数?

时间:2014-10-27 03:40:08

标签: date

我遇到以下代码段中说明的问题:

$ echo "2014-10-26 23:24:38.3123123" | date -d -
Sun Oct 26 00:00:00 EDT 2014
$ date -d "2014-10-26 23:24:38.3123123"
Sun Oct 26 23:24:38 EDT 2014

正如您所看到的,当我使用echo输入数据时,未获取小时/分钟/秒信息,但是当我将其用作命令行参数时,它会被拾取。我确信有些东西是我没有注意到的,但是如果有人可以告诉我这是什么,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

当你写:

$ echo "2014-10-26 23:24:38.3123123" | date -d -

2014-10-2623:24:38.3123123之间的空格字符被视为参数分隔符,而date命令将日期字符串视为两个不同的参数。

您可以简单地转义此空格字符:

    $ echo "2014-10-26\ 23:24:38.3123123" | date -d -

它有效;

Sun Oct 26 23:24:38 EDT 2014