2015-02-11 50 views
1

我試圖用bash腳本中的日期進行一些計算,但找不到正確的語法。我從我轉換爲日期的文件中獲取字符串。然後我想要提前一天和兩天的日期。看着另一個StackOverflow的帖子,看起來很容易,今天添加日期。這就是我現在所做的:在bash中玩日期:傳遞變量

# 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

當您通過幾個-d或​​,date使用最後一個。所以,當你這樣做:

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

日期將考慮--date='1 day',因爲它是最後-d/​​參數,並會很樂意告訴你明天的日期。

相反,你應該使用:

date -d "$ctldate +1 day" 
+0

感謝@ gniourf-gniourf工作正常,又好又快的答案。 – pacomet 2015-02-11 09:11:04