在bash中玩日期:传递变量

帕科梅特

我试图用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传递给command,并且计算的基准日期是今天。

提前致谢

gniourf_gniourf

当您传递多个-d或时--date,请date使用最后一个。因此,当您这样做时:

date -d "$ctldate" --date='1 day'

日期会考虑--date='1 day',因为它是最后一个-d/--date参数,并会很乐意告诉你明天的日期。

相反,您应该使用:

date -d "$ctldate +1 day"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章