endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"
上面的代码给出了错误,但下面的代码运行正常。我想使用上面的日期格式;我将如何做到这一点?
TODAY=`date +%d`
TODAY=`expr $TODAY - 7`
echo $TODAY
答案 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。