bash – ‘7天前’在crontab中的日期格式问题

我正在运行一个包含curl whron的cron,其中包含startDate和endDate的值,它们必须采用yyyy-mm-dd格式. endDate是今天,startDate是7天前.总体格式是:

curl -o ~/location/filename.xml "http://url.asmx/do_this?&startDate=x&endDate=y"

使用固定的开始日期,这可以通过macosx上的终端运行:

&startDate=2014-10-01&endDate=`date +\%Y-\%m-\%d`"

但是,记住startDate应该在系统日期之前7天,以下两种方法都会导致错误’指定的日期格式不正确.日期格式应为:YYYY-MM-DD,例如2011-12-24′

startDate=`date -d '7 days ago' +\%Y-\%m-\%d`&endDate=`date +\%Y-\%m-\%d`
startDate=`date --date="7 days ago"  +\%Y-\%m-\%d`&endDate=`date +\%Y-\%m-\%d`

这是使用“’和`?的问题吗?

我在这做错了什么? BTW我试图保持在一行命令行而不是在文件中使用脚本.

编辑:从谷歌搜索和复制和粘贴许多建议,我发现在Mac论坛上的以下工作:

$(date -v-7d +%Y-%m-%d)

但是我以前没见过-v.我想知道它是什么,是Mac特定的,这会在其他服务器上出现问题吗?

最佳答案

Is this an issue with using ” ‘ and `?

大概.用$()替换“你的命令有效:

curl -o ~/location/filename.xml "http://url.asmx/do_this?&startDate=$(date -d '7 days ago' +\%Y-\%m-\%d)&endDate=$(date +\%Y-\%m-\%d)"
点赞