所以,我有一个完整的脚本,每小时运行一次,输入日期。通常,它需要当前时间,但现在我需要它在过去,每小时运行一段时间。
到目前为止我所做的是:
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编程的新手,我不知道该怎么做。有帮助吗? 提前谢谢。
答案 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
作为变量名来避免歧义。