比较bash中的日期和时间

时间:2016-01-21 14:22:00

标签: bash datetime if-statement

我想比较两个日期和时间变量:

2016-01-21 17:15:06.614852743 +0300

我正在尝试这个:

MODDATE_INIT=$(stat -c %y /home/user/my_file)
if [ $(stat -c %y /home/user/my_file) -lt  $MODDATE_INIT ]; then cat my_file; fi"

我收到错误:

  

bash:[:论据太多了   我做错了什么?请帮我修复我的脚本。

1 个答案:

答案 0 :(得分:1)

您没有引用日期字符串,因此它由shell扩展并显示为

if [ $(stat ...) -lt 2016-01-21 17:15:06...]
       ^--arg 1          ^--arg 2   ^---arg 3???

[二进制文件。时间组件显示为-lt测试的额外参数,因此“参数太多”。

尝试

if [ $(stat -c %y /home/user/my_file) -lt  "$MODDATE_INIT" ]; then cat my_file; fi"
                                           ^-------------^

请注意额外的报价。