如何使用grep从crontab文件中提取一行并将其存储到变量中?这不起作用:
CTMP=$(crontab -l | grep $SCRIPT)
$ SCRIPT是程序中定义的另一个变量。示例anm.sh,这是我在crontab中搜索的内容,用于标识我需要提取的行。
谢谢!
*更新*
它做的事很奇怪。我试过这个:
CTMP=$(crontab -l | grep "anm.sh")
这就是我的crontab的样子:
*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh
然而,当我回应CTMP时,它随机地有一堆信息毫无意义。它以某种方式拉动当前工作目录中的目录名称。这是输出:
*/17 anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp cd /home/administrator/anm-1.5.0 && ./anm.sh
那些目录名确实存在,但为什么它会拉这些目录名???
我需要做的就是从存储到变量CTMP的crontab文件中获取该行
由于
答案 0 :(得分:2)
我认为问题出在ECHO声明中。
当你执行crontab -l | grep "anm.sh"
时,变量就会被填充:
CTMP="*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh"
echo $CTMP
<<bunch of dir names>>
echo "$CTMP"
*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh
在回显时引用变量。
答案 1 :(得分:0)
您可能想要关闭globbing(正在解释星号)。
也许你也应该使用引号。
CTMP="$(set -f; crontab -l | grep 'anm.sh')"