2017-04-21 189 views
-1
endDate=`date +%m-%d-%Y` 
endDate=`expr $endDate -7` 
echo "$endDate" 

上面的代碼給出錯誤,但是下面的代碼運行正常。我想使用上面的日期格式;我怎麼做到這一點?Shell腳本日期

TODAY=`date +%d` 
TODAY=`expr $TODAY - 7` 
echo $TODAY 

回答

2

您遇到的錯誤「expr:非整數參數」應顯示您遇到的問題;當你嘗試從「04-14-2017」減去7時,你沒有得到你所期望的。上週得到的,你可以在-d標誌傳遞得到一個特定的日期,而不是「現在」

endDate=`date -d '7 days ago' +"%m-%d-%Y"` 
echo $endDate 
+0

完美謝謝克里斯 – Satte

0

你的第二組命令的工作,因爲date +%d返回一個數字的默認值,你可以減去7一個號碼。您的第一組命令失敗,因爲date +%m-%d-%Y返回一串字符,並且不能從字符串中減去7。

對於date命令,正確和安全地執行日期數學有點過於複雜,尤其是如果您的時區帶有夏令時。我推薦一個perl模塊,如Date :: EzDate或DateTime。

+0

管理這個的正確方法是將1970年(UTC)的起始日期轉換爲秒,以秒爲單位進行數學運算,然後將最終的UTC轉換爲所需的日期格式 – aicastell