我有一个不能按预期工作的简单脚本:
#!/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中删除* * * * *
,问题就会消失,但我无法弄清楚为什么它不能与当前的* * * * *
一起使用。
答案 0 :(得分:2)
基本上一个问题是*
是grep
的元字符。如果您要搜索*
,请引用\*
。要了解您的模式的成效,请参阅:this comment by chepner。
或者用grep
替换fgrep
命令(搜索确切的字符串。
另一个问题是,*
是shell扩展的元字符,所以你应该echo "${YOURVARIABLE}"
。