Bash中可以使用grep "*"代替"\*"吗?

4
如何在文本文件中搜索星号*?这里是我的代码:
if grep -F "\#$minute $hour $date $month $day $cr_user $comm" filecron; then
        echo "$minute $hour $date $month $day $cr_user $comm" > /dev/null 2>&1
        echo "data exist"

elif [[ -z $minute || -z $hour ]]; then
        echo "#$minute $hour $date $month $day $cr_user $comm" > /dev/null 2>&1
        echo "nothing to input"
        echo "" >> filecron

elif [[ $stat == "inactive" ]]; then
        echo "\#$minute $hour $date $month $day $cr_user $comm" >> filecron
        echo "input data inactive to filecron"

else
        echo "$minute $hour $date $month $day $cron_user $comm" >> filecron
        echo "input data active to filecron"

fi

这里是包含文件cron的内容。
#30 07 03 09 RAB root bash /media/data/once.sh > /dev/null 2>&1
#* * * * * root bash /media/data/looping.sh > /dev/null 2>&1
#56 * * * * root bash /media/data/minutely.sh /dev/null 2>&1
#43 * * * * root bash /media/data/hourly.sh > /dev/null 2>&1
#54 11 * * * root bash /media/data/daily.sh /dev/null 2>&1
#00 12 * * RAB root bash /media/data/weekly.sh > /dev/null 2>&1
#30 20 15 * * root bash /media/data/monthly.sh > /dev/null 2>&1
#45 21 01 09 * root bash /media/data/yearly > /dev/null 2>&1
#15 16 31 08 MIN root bash /media/data/other.sh > /dev/null 2>&1
#30 07 * * * root bash /media/data/daily2.sh > /dev/null 2>&1
#30 10 * * * root bash /media/data/daily3.sh > /dev/null 2>&1
#45 17 17 * * root bash /media/data/monthly2.sh > /dev/null 2>&1
#00 18 * * SAB root bash /media/data/weekly2.sh > /dev/null 2>&1

#30 07 03 09 RAB root bash /media/data/once.sh > /dev/null 2>&1
#* * * * * root bash /media/data/looping.sh > /dev/null 2>&1
#56 * * * * root bash /media/data/minutely.sh /dev/null 2>&1
#43 * * * * root bash /media/data/hourly.sh > /dev/null 2>&1

但是如果$minute$hour$month$day$date中有一个为*grep就无法工作。

那么,我该怎么做呢?

1个回答

7
如果您没有任何正则表达式模式,只想完全匹配字符串,请使用-F选项来使用grep(或旧的fgrep命令):
if grep -F "#$minute $hour $date $month $day $cr_user $comm" filecron; then

我已经尝试过了,但变量仍然被重定向到文件中。 在我使用grep之后,它不应该被重定向到文件中。这是一个包含示例的文件。 #30($minute) 15($hour) *($date) ($month) MON($day) root($cr_user) bash /media/data/test1.sh > /dev/null 2>&1($comm) # * * * * root bash /media/data/test2.sh > /dev/null 2>&1那怎么样? 我应该如何编写grep代码? - Lazuardi N Putra
只为"sign"。我必须确保没有变量重定向两次。 - Lazuardi N Putra
我不知道你所说的“no variable redirect twice”是什么意思。由于你使用了elif,只有一个语句块会被执行。无论如何,我要求你发布变量的值,为什么不这样做呢? - Barmar
只显示那些脚本运行不正确时出现的内容。 - Barmar
我放弃了,这仍然没有显示变量的值。 - Barmar
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接