如何在不评估命令的情况下使用 bash 插入 cronjobs?
How to insert cronjobs using bash without evaluating command?
我正在使用 bash oneliner 创建一个 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 不对带单引号的字符串进行变量扩展。您可以对内部字符串(要回显的参数)或外部字符串使用单引号(然后对内部字符串使用未转义的双引号)
我正在使用 bash oneliner 创建一个 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 不对带单引号的字符串进行变量扩展。您可以对内部字符串(要回显的参数)或外部字符串使用单引号(然后对内部字符串使用未转义的双引号)