使用grep或类似的东西从crontab中提取行

时间:2013-06-24 08:18:15

标签: bash grep

如何使用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文件中获取该行

由于

2 个答案:

答案 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')"