2014-01-23 34 views
1

所以,我有一個整個腳本,每小時運行一個日期作爲輸入。通常,它需要當前時間,但現在我需要它在過去每隔一小時運行一段時間。在shell腳本中使用不同的日期

什麼我迄今所做的是:

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

你想要的是這樣的:

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

正如@BMW說,儘量避免使用date作爲變量名,以避免歧義。

0

$(日期)將運行命令date並導出結果。 所以當回顯它時,它會返回當前日期/時間。

其次,date是unix命令,避免將它用作變量。所以這將解決您的問題」

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