0

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

#!/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 中删除,问题就消失了,但我不知道为什么它不适合* * * * *现在。

4

1 回答 1

2

基本上,一个问题*grep. 如果你想搜索*你应该引用它,如\*. 要了解您的模式为何奏效,请参阅:chepner 的此评论

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

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

于 2012-06-08T18:21:18.990 回答