在bash中比较日期和时间
我想比较两个日期和时间变量:在bash中比较日期和时间,bash,datetime,if-statement,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:[:参数太多 我做错了什么?请帮我修改脚本 您没有引用日期字符串,因此它由shell展开并显示为 i
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:[:参数太多
我做错了什么?请帮我修改脚本
您没有引用日期字符串,因此它由shell展开并显示为
if [ $(stat ...) -lt 2016-01-21 17:15:06...]
^--arg 1 ^--arg 2 ^---arg 3???
时间组件作为-lt
测试的额外参数出现,因此“参数太多”
试一试
注意额外的引号。我知道在这种情况下,由于stat使用的格式字符串,它不是100%必需的,但是引用命令替换也不会造成任何伤害。或者不需要引用任何内容并使用
[[
就像bash上的一样。引用只是一个问题。另一个问题是,你不能使用-lt
来比较日期字符串,只要字符串的格式是最重要的第一顺序,并且时区是相同的。[2016-lt“2017-10-12”]
产生“bash:[:2017-10-12:预期的整数表达式”您还可以使用直接比较文件日期的-nt
比较器:如果[file1-nt file2]…
if [ $(stat -c %y /home/user/my_file) -lt "$MODDATE_INIT" ]; then cat my_file; fi"
^-------------^