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