在bash中玩日期:传递变量
问题描述:
我试图用bash脚本中的日期进行一些计算,但找不到正确的语法。我从我转换为日期的文件中获取字符串。然后我想要提前一天和两天的日期。看着另一个StackOverflow的帖子,看起来很容易,今天添加日期。这就是我现在所做的:在bash中玩日期:传递变量
# Extract date string from file
ctldate=`awk 'NR==8 { print $4 }' a-AC-2015-02-10-120000-g3.ctl`
echo $ctldate
12:00Z10feb2015
# Convert string to date
ctldate2=`date +'%d/%m/%Y' -d $ctldate`
echo $ctldate2
10/02/2015
# Try to add a day, should be 11/02
data1=$(date +'%d/%m/%Y' -d "$ctldate" --date='1 day')
echo $data1
12/02/2015
# Also tried
data1=$(date +'%d/%m/%Y' -d "$ctldate2" --date='1 day')
echo $data1
12/02/2015
# And
data1=`date +'%d/%m/%Y' -d $ctldate --date='1 day'`
echo $data1
12/02/2015
看来,我无法正常传递$ ctldate VAR命令和用于计算基准日今天。
在此先感谢
答
当您通过几个-d
或,date
使用最后一个。所以,当你这样做:
date -d "$ctldate" --date='1 day'
日期将考虑--date='1 day'
,因为它是最后-d
/参数,并会很乐意告诉你明天的日期。
相反,你应该使用:
date -d "$ctldate +1 day"
感谢@ gniourf-gniourf工作正常,又好又快的答案。 – pacomet 2015-02-11 09:11:04