Shell脚本日期

时间:2017-04-21 13:42:57

标签: shell date

endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"

上面的代码给出了错误,但下面的代码运行正常。我想使用上面的日期格式;我将如何做到这一点?

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

2 个答案:

答案 0 :(得分:2)

你得到的错误," expr:非整数参数",应该表明你得到了什么样的问题;当你试图从" 04-14-2017"中减去7时,你得不到你期望的东西。要获得上周,您可以传递-d标记以获取特定日期,而不是默认的"现在"

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

答案 1 :(得分:0)

您的第二组命令有效,因为date +%d返回一个数字,您可以从数字中减去7。您的第一组命令失败,因为date +%m-%d-%Y返回一串字符,您无法从字符串中减去7。

正确安全地进行日期数学运算对于date命令来说有点过于复杂,尤其是如果您有夏令时的时区。我推荐一个perl模块,比如Date :: EzDate或DateTime。