5

grepパターンを一重引用符と二重引用符で囲むことに違いはありますか?

grep "abc" file.txt

grep 'abc' file.txt

考えられるすべてのケースを自分でテストする方法はなく、間違ったケースに遭遇したくないので、私は尋ねています:)

4

2 に答える 2

5

特殊文字がある場合、違いがわかります。

元 :

grep "foo$barbase" file.txt

シェルは variable を展開しようとします$barbaseが、これは意図したものではない可能性があります。

代わりに入力すると

grep 'foo$barbase' file.txt

$bar文字通りに取られます。

最後に、デフォルトでは常に一重引用符を優先します。より強力です。

于 2012-11-08T05:16:59.200 に答える
1
  • 二重引用符で囲まれた次の文字には特別な意味があります: '$'、'`'、'\'、および履歴展開が有効な場合は '!'。

    文字 '$' と '<code>' は、二重引用符内で特別な意味を持ちます (変数と実行の $)。

    特別なパラメータ '*' と '@' は、$ が続く場合、入力として二重引用符で囲まれた特別な意味を保持します。

    「$」、「`」、「"」、「\」、または改行は、前にバックスラッシュを付けることでエスケープできます。

    バックスラッシュは、'$'、'`'、'"'、'\'、または改行が続く場合、その特別な意味を保持します。バックスラッシュの前にある特別な意味のない文字は変更されません。

    また、シェル拡張を確認することも役立ちます:
    https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions

  • 一重引用符はシェル展開を無視します。
于 2016-01-29T23:40:34.793 に答える