使用 curl 和包含动态日期的文件名

使用 curl 和包含动态日期的文件名

我正在尝试将动态创建的日志文件从本地框上传到我的 FTP 服务器。这一切都发生在我每晚运行的 cron 作业 (crontab) 中。它使用以下方式创建文件:

30 00 * * * touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"

效果很好。但是,当我尝试使用相同语法上传文件时:

50 00 * * * curl -T ~/Desktop/logs/"log$(date +'\%m\%d\&y')" -u user:pass ftp://example.com/logs/

它给了我以下错误:

date: extra Operand

我也尝试过不转义%的情况:

curl -T ~/Desktop/logs/"log$(date +'%m%d%y')" -u user:pass ftp://example.com/logs/

在正常命令行中有效,但通过 crontab 执行时出现以下错误:

/bin/sh: Syntax error: Unterminated quoted string

关于如何将每日日志成功上传到我的服务器,有什么想法吗?

答案1

我在 cron 作业中通常指定日期的方式是不在整个名称周围使用引号,而是在日期命令周围使用反引号,因此:

50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/

尽管我希望$(date ...)语法也能起作用。

(哦,我假设第二个 cron 作业中 y 之前的 & 符号是问题中的拼写错误 - 但如果你 cron 作业中也有这个符号,那就有问题了。)

相关内容