在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" 
+0

感谢@ gniourf-gniourf工作正常,又好又快的答案。 – pacomet 2015-02-11 09:11:04