Grep F パラメータが完全一致でない

Grep F パラメータが完全一致でない

PHP 変数と一致させる-Fために、パラメータを使用しようとしています。以下を実行すると、grep

grep -F "$_SESSION['index']" -ri .

ただし、一致するのは:

['index']

これを にも一致させるにはどうしたらよいでしょう$_SESSIONか。 は$_SESSION存在しない環境変数として読み取られ、 はgrepとして読み取られるのでしょうか['index']。 によってプレーン テキストとして読み取られると思いましたが-F、それによって正規表現の動作がオフになるだけかもしれません。

これが動作の場合、どうすればいいでしょうか? PHP は単一引用符を使用してカプセル化するため、シェルでのエスケープが失敗するため、単一引用符を使用できません。

grep -F '$_SESSION[\'index\']' -ri .

答え1

grep -Fシェルの解析を回避しません。

二重引用符内では、ドル記号をエスケープします。

grep -F "\$_SESSION['index']" -ri .

一重引用符には、他の一重引用符を除いて何でも含めることができます (エスケープ文字はありません)。ただし、引用符で囲まれた文字列は、エスケープされた引用符で連結できます。

grep -F '$_SESSION['\''index'\'']' -ri .

答え2

複数の異なる引用セクションをまとめて 1 つの単語にすることもできます。次の例をご覧ください。

grep -F '$_SESSION'"['index']" -ri .

関連情報