ifループを使用して文字列と特殊文字を比較すると機能しません。

ifループを使用して文字列と特殊文字を比較すると機能しません。

特定のファイルの各行を次の文字列と比較したいと思います。

#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];

(「file.txt」にはこの特定の行が含まれています)

私は特殊文字の前に「\」を付けて、次のことを試しました。

IFS=''
while read -r line
do
  if [ "$line" == "#orb_plugins = \[\"local_log_stream\", \"iiop_profile\", \"giop\", \"iiop\"\];" ]
  then
    echo "String found. Do remaining steps"
  fi
done < file.txt

ベストアンサー1

作業に適したツール、つまり次のものを使用するのはどうですかgrep

grep -qxFf- file.txt <<\IN && printf %s\\n "String found. Do remaining steps"
#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];
IN

一致するものが見つかると、ファイルの読み取りは停止します。また、(平均的に)ループより約100倍高速ですwhile read

おすすめ記事