定义包含通配符(*)的crontab作业,而不扩展它们

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义包含通配符(*)的crontab作业,而不扩展它们相关的知识,希望对你有一定的参考价值。

我需要安装一个新的crontab,它每2分钟运行一次脚本。为此,我应该在crontab文件中编写以下内容:

*/2 * * * * cd /myDirectory/ && ./myScript.sh

我需要以编程方式安装这个qazxsw poi命令,使用相同的qazxsw poi。我试着这样做:

crontab

逻辑有效,但问题是我的myScript.sh变量。我试图像这样定义它:

crontab -l > ./currentcron              #save current crontab in file
echo ${FULL_CRONTAB} >> ./currentcron   #append my command
crontab ./currentcron                   #install new file
rm ./currentcron                        #remove temporary file

...但由于FULL_CRONTAB字符串被扩展,所以变量实际上获得了文件夹中的完整文件列表,而不是我应该添加到我的crontab的目标字符串。

我尝试使用单引号(FULL_CRONTAB="*/2 * * * * cd ${APPLICATION_DIRECTORY}/ && ./myScript.sh" ),但没有任何改变。

我也试图逃脱"(例如'),但变量包含*而不仅仅是FULL_CRONTAB="*/2 * * * * cd ${APPLICATION_DIRECTORY}/ && ./myScript.sh"所以它不可用。

感觉就像一个基本的问题,但我不会出现这个:我怎么能得到我的定义知道我必须解释*,但我不想解释FULL_CRONTAB,所以我的目标将是命令如下?

${APPLICATION_DIRECTORY}

用例是:

*

在我的终端上,上面的第三个命令输出如下内容:

*/2 * * * * cd /myDirectory/ && ./myScript.sh
答案

在使用时,您需要将bash$ APPLICATION_DIRECTORY="/myDirectory" bash$ FULL_CRONTAB="*/2 * * * * cd ${APPLICATION_DIRECTORY}/ && ./myScript.sh" bash$ echo ${FULL_CRONTAB} 变量用双引号括起来,以防止出现变形:

*/2 -ltr (...list of all the files and folders in the current directory...) cd /myDirectory/ && ./myScript.sh

以上是关于定义包含通配符(*)的crontab作业,而不扩展它们的主要内容,如果未能解决你的问题,请参考以下文章

我可以扩展外部 scss 规则而不将其包含在输出中吗?

Linux提权第四篇-Linux Cron Jobs(任务计划)提权(crontab文件覆盖提权Crontab Tar Wildcard(通配符)注入提权)

如何在 crontab 更改时获得警报?

使用 PHP 创建、编辑和删除 crontab 作业?

Crontab 批量删除指定作业

每天而不是每月执行的 crontab 作业