![在文件中搜索字符串时遇到问题](https://linux22.com/image/56047/%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%90%9C%E7%B4%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%97%B6%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98.png)
我尝试使用“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
),除非它们包含特殊字符。 (方括号 - ”[
“ 和 ”]
” - 在这种情况下是特殊字符。)但无论如何引用它们是个好主意。