如何在不评估命令的情况下使用bash插入cronjobs



我正在使用bash oneliner创建一个cronjob,该cronjob将文件保存到取决于当前时间的路径,因此我使用date。但是,插入cronjob时会计算date表达式,而我希望在cron运行作业时计算date表达式。

我的命令是这样的:

bash -c "(crontab -r; echo "* * * * * /usr/bin/wget -o /backups/$(date +%F_%R).sql 127.0.0.1:8000/api/export/full") | crontab -"

如何更改此命令以实现此目的?

echo的参数放在单引号中,而不是双引号中,这样就不会对$(...)进行任何求值。

也不需要在通过管道传输到crontab -的命令中包含crontab -r

bash -c "crontab -r; echo '* * * * * /usr/bin/wget -o /backups/$(date +%F_%R).sql 127.0.0.1:8000/api/export/full' | crontab -"

使用单引号而不是双引号。Bash不在带有单引号的字符串中进行变量展开。您可以对内部字符串(要回显的参数(使用单引号,也可以对外部字符串(然后对内部字符串使用无标题双引号(

最新更新