0

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

谢谢

4

2 回答 2

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

回显时引用变量。

于 2013-06-24T08:52:15.340 回答
0

您可能想要关闭通配符(正在解释星号)。

可能,您还应该使用引号。

CTMP="$(set -f; crontab -l | grep 'anm.sh')"
于 2013-06-24T08:40:43.910 回答