在shell脚本中使用不同的日期

时间:2014-01-23 00:01:00

标签: shell date

所以,我有一个完整的脚本,每小时运行一次,输入日期。通常,它需要当前时间,但现在我需要它在过去,每小时运行一段时间。

到目前为止我所做的是:

 DEFINING THE OLD DATE
  8 start_date=20131218
  9 num_hours=5
 10 for i in `seq 1 $num_hours`
 11 do
 12     date=`date -d "${start_date}+${i} hours"` 
 13     echo $date # Use this however you want! 
 14 
  .
  .
  .
 25  done

开始日期是2013年12月18日,然后在每次迭代中它应该从开始时间再给我一个小时。这部分我在这里的另一篇文章中找到它并且它有效。当我做

时,问题就出现了
 echo $(date)

它打印当前时间而不是我之前定义的时间。当然,我从日期定义的任何其他变量都具有当前时间的值。例如,

 18 datestamp=$(date +%F)
 19 hourstamp=$(date +%H)

我是shell编程的新手,我不知道该怎么做。有帮助吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

$(date)将运行命令date并导出结果。 因此,当它回显时,它将返回当前日期/时间。

其次,date是unix命令,避免将其用作变量。所以这将解决你的问题“

DATE=`date -d "${start_date}+${i} hours"` 
echo $DATE

答案 1 :(得分:0)

你想要的是这个:

18 datestamp=$(date -d "${start_date}+${i} hours" +%F)
19 hourstamp=$(date -d "${start_date}+${i} hours" +%H)

正如@BMW所说,尽量避免使用date作为变量名来避免歧义。