麻烦简单的bash脚本附加crontab文件

时间:2012-06-08 18:14:33

标签: bash crontab

我有一个不能按预期工作的简单脚本:

#!/bin/bash
CRONFILE="/tmp/temp_cron"
crontab -l > "$CRONFILE" 
grep "* * * * * /usr/local/bin/temp_cpu_gmetric.sh" /tmp/temp_cron
CRONCONT=`grep "* * * * * /usr/local/bin/temp_cpu_gmetric.sh" /tmp/temp_cron`
echo $CRONCONT

我的crontab包含一行,* * * * * /usr/local/bin/temp_cpu_gmetric.sh - 正是grep'd的内容。 grep的第一个实例返回此字符串的一个实例,如预期的那样。

然而,echo $CRONCONT实例返回时* * * * *被一大堆东西所取代。这包括运行脚本的目录的内容,还包括许多其他我不能立即知道其位置的内容。

如果我从我的cronfile中删除* * * * *,问题就会消失,但我无法弄清楚为什么它不能与当前的* * * * *一起使用。

1 个答案:

答案 0 :(得分:2)

基本上一个问题是*grep的元字符。如果您要搜索*,请引用\*。要了解您的模式的成效,请参阅:this comment by chepner

或者用grep替换fgrep命令(搜索确切的字符串。

另一个问题是,*是shell扩展的元字符,所以你应该echo "${YOURVARIABLE}"