我有一个包含字符串的文件:
2014-11-22 08:15:00
...代表Nov 22 2014 @ 8:15 AM
。
我想解析这个字符串并将其与BASH中的日期函数一起使用,以与当前日期进行比较。 我有比较日期的代码,但两个日期都是由BASH生成的,并且它易于格式化和比较。但是,我不能使用字符串(从另一个系统收集)进行比较。
我尝过这样的话:
$ mydate=$(cat filewithstring);date -d $mydate
$ mydate=$(cat filewithstring);date -d '$mydate'
$ mydate=$(cat filewithstring);date -d $mydate "+%Y-%m-%d %H:%M:%S"
我最终得到的错误如下:
日期:参数'08:00:00'缺少领先' +&#39 ;;使用时 指定日期的选项,任何非选项参数必须是格式 以' +' *
开头的字符串
...或...
日期:额外操作数'+%Y-%m-%d%H:%M:%S'
我知道如果我明确输入字符串,它可以正常工作:
$ date -d '2014-11-22 08:15:00'
Sat Nov 22 08:15:00 EST 2014
最后,我希望做到以下几点:
有什么想法吗?感谢。
答案 0 :(得分:3)
这是因为您使用单引号,因此不会扩展变量的值。
你可以说:
mydate=$(<filewithstring)
date -d"$mydate" "+%Y-%m-%d %H:%M:%S"
^ ^
另请注意,mydate=$(<filewithstring)
是将文件读入变量的更佳方式。