「case」ループを試してみましたが、不明な理由で動作しません。
ここに私のケースループスクリプトがあります。
echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2
y)
;;
*)
exit
;;
その後、スクリプトをよりユーザーフレンドリーにしようとすると問題が発生します。文字列が見つからないが判別できない場合は、スクリプトがユーザーに通知したいと思います。運のないケースループを試してみましたが、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
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私は妥当な理由がなく、自分が何をしているのかを知らない限り、シェル変数(例えば、および"$INPUT_STRING2"
)"$STRING"
へのすべての参照を引用することをお勧めします。"$FILE"
逆に君はそうじゃない必要string found
特殊文字が含まれていない場合は、定数文字列(例:)を引用してください。 (角括弧 - "[
「そして」]
「 - この場合は特殊文字。)が、とにかく引用することをお勧めします。