在文件中搜索字符串时遇到问题

在文件中搜索字符串时遇到问题

我尝试使用“case”循环,但由于我未知的原因它不起作用。

这是我的案例循环脚本。

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2
   y)
   ;;
   *)
   exit
   ;;

然后我在尝试使我的脚本更加用户友好时遇到问题,我希望我的脚本告诉用户是否找不到该字符串,但我无法弄清楚。我尝试过使用 case 循环,但没有运气,并尝试使用 else 语句,但它不起作用。

if grep -q $STRING $FILE ; then
             echo "string found"
fi

这部分有效,但不是我想要的全部。

答案1

in案例陈述和结束语中似乎缺少一个“ ” esac

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   y)
   ;;
   *)
   exit
   ;;
esac

答案2

您犯了两个语法错误(in在变量之后和esac作为 case 语句的结尾):

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   "y")
   echo "Searching again"
   ;;
   *)
   exit
   ;;
esac

答案3

我希望我的脚本告诉用户是否找不到该字符串......我尝试过……使用声明else,但没有成功。

你尝试了什么?

if grep -q "$STRING" "$FILE"
then
        echo "string found"
else
        echo "string not found"
fi

作品。

PS 我建议您引用所有对 shell 变量的引用(例如,"$INPUT_STRING2""$STRING""$FILE"),除非您有充分的理由不这样做并且您确定您知道自己在做什么。相反,你不需要引用常量字符串(例如,string found),除非它们包含特殊字符。 (方括号 - ”[“ 和 ”]” - 在这种情况下是特殊字符。)但无论如何引用它们是个好主意。

相关内容