ファイルから文字列を取得する際に問題があります。

ファイルから文字列を取得する際に問題があります。

「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変数の後ろとesacCaseステートメントの最後)。

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特殊文字が含まれていない場合は、定数文字列(例:)を引用してください。 (角括弧 - "[「そして」]「 - この場合は特殊文字。)が、とにかく引用することをお勧めします。

関連情報