使用简单的 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 中删除* * * * *,问题就会消失,但我无法弄清楚为什么它不应该与存在的* * * * *一起使用。

基本上一个问题是*grep的元字符。如果你想搜索*你应该像*一样引用它。要了解为什么您的模式会奏效,请参阅:切普纳的此评论。

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

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

最新更新