在bash中使用日期:传递变量

时间:2015-02-11 09:00:04

标签: bash date scripting

我试图在bash脚本中使用日期进行一些计算,但无法找到正确的语法。我从我转换为日期的文件中获取一个字符串。然后我想提前一天和两天的日期。查看另一个StackOverflow帖子,看起来很容易添加到今天的日期。这就是我现在正在做的事情:

# 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传递给命令,而且计算的基准日期是今天。

提前致谢

1 个答案:

答案 0 :(得分:1)

当您传递多个-d--date时,date会使用最后一个date -d "$ctldate" --date='1 day' 。所以当你这样做时:

--date='1 day'

日期将考虑-d,因为它是最后一个--date / date -d "$ctldate +1 day" 参数,并会很高兴地告诉您明天的约会。

相反,你应该使用:

{{1}}