我需要安装一个新的crontab
,它每2分钟运行一次脚本。
为此,我应该在crontab
文件中编写以下内容:
*/2 * * * * cd /myDirectory/ && ./myScript.sh
我需要使用相同的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
变量。我试图这样定义它:
FULL_CRONTAB="*/2 * * * * cd ${APPLICATION_DIRECTORY}/ && ./myScript.sh"
...但是由于"
导致字符串被扩展,因此变量实际上获得了文件夹中文件的完整列表,而不是我应添加到crontab中的目标字符串。
我尝试改用单引号('
),但没有任何变化。
我也尝试转义*
(例如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
答案 0 :(得分:1)
在使用FULL_CRONTAB
变量时,您需要将其用双引号括起来,以防止出现问题:
"$FULL_CRONTAB"