endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"
上面的代碼給出錯誤,但是下面的代碼運行正常。我想使用上面的日期格式;我怎麼做到這一點?Shell腳本日期
TODAY=`date +%d`
TODAY=`expr $TODAY - 7`
echo $TODAY
endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"
上面的代碼給出錯誤,但是下面的代碼運行正常。我想使用上面的日期格式;我怎麼做到這一點?Shell腳本日期
TODAY=`date +%d`
TODAY=`expr $TODAY - 7`
echo $TODAY
您遇到的錯誤「expr:非整數參數」應顯示您遇到的問題;當你嘗試從「04-14-2017」減去7時,你沒有得到你所期望的。上週得到的,你可以在-d
標誌傳遞得到一個特定的日期,而不是「現在」
endDate=`date -d '7 days ago' +"%m-%d-%Y"`
echo $endDate
你的第二組命令的工作,因爲date +%d
返回一個數字的默認值,你可以減去7一個號碼。您的第一組命令失敗,因爲date +%m-%d-%Y
返回一串字符,並且不能從字符串中減去7。
對於date
命令,正確和安全地執行日期數學有點過於複雜,尤其是如果您的時區帶有夏令時。我推薦一個perl模塊,如Date :: EzDate或DateTime。
管理這個的正確方法是將1970年(UTC)的起始日期轉換爲秒,以秒爲單位進行數學運算,然後將最終的UTC轉換爲所需的日期格式 – aicastell
完美謝謝克里斯 – Satte