我有一个简单的脚本没有按预期工作:
#!/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 中删除* * * * *
,问题就会消失,但我无法弄清楚为什么它不应该与存在的* * * * *
一起使用。
基本上一个问题是*
是grep
的元字符。如果你想搜索*
你应该像*
一样引用它。要了解为什么您的模式会奏效,请参阅:切普纳的此评论。
或者将grep
命令替换为 fgrep
(搜索确切的字符串。
另一个问题是,*
是外壳扩展的元字符,所以你应该echo "${YOURVARIABLE}"
。