3つの引用メカニズムがあります:エスケープ文字、単一引用符、および二重引用符です。
引用符で囲まれていないバックスラッシュ(\)は
エスケープ文字です。<newline>を除き、次の文字のリテラル値を保持します。場合は\ <改行>ペアが表示され、およびバックスラッシュは、それ自体ではなく、引用された\ <改行>行の継続(、それは入力ストリームから除去され、効果的に無視されている)として扱われます。
文字を一重引用符で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが先行する場合でも、単一引用符の間に単一引用符が発生しない場合があります。
文字を二重引用符で囲むと、引用符内のすべての文字のリテラル値が保持されますが、例外は$、`、\、および履歴展開が有効な場合は!。文字$と`は、二重引用符で囲まれた特別な意味を保持します。バックスラッシュは、$、`、"、
\、または<newline>のいずれかの文字が続く場合にのみ、特別な意味を保持します。が実行されない限り!二重引用符で囲むと、バックスラッシュを使用してエスケープされます。!の前のバックスラッシュ 削除されません。
特別なパラメーター*および@は、二重引用符で囲まれている場合に特別な意味を持ちます(以下のパラメーターを参照)。
$ ' string 'という形式の単語は特別に扱われます。単語はstringに展開され、バックスラッシュでエスケープされた文字がANSI C標準で指定されているように置き換えられます。バックスラッシュエスケープシーケンスが存在する場合、次のようにデコードされます。
\ 警告(ベル)
\ B バックスペース
\ E
\ E エスケープ文字
\ F フォームフィード
\ nは 改行
\ r個の キャリッジリターン
\トン 水平タブ
\ V 垂直タブ
\\ バックスラッシュ
\」 単一引用符
\」 二重引用符
\ NNN 値が8進数値nnnである8ビット文字
(1〜3桁)
\ x HH 値が16進数値HHである8ビット文字
(1桁または2桁の16進数)
\ u HHHH Unicode(ISO / IEC 10646)文字の値は
16進値HHHH(1から4桁の16進数字)
\ U HHHHHHHH
値がUnicode(ISO / IEC 10646)文字
16進値HHHHHHHH(1〜8進数字)
\ C X Aコントロール- X文字
展開された結果は、ドル記号が存在しないかのように、単一引用符で囲まれます。
二重引用符で囲まれた文字列の前にドル記号($ " string ")があると、現在のロケールに従って文字列が翻訳されます。現在のロケールがCまたはPOSIXの場合、ドル記号は無視されます。文字列が翻訳および置換される場合、置換は二重引用符で囲まれます。
"$HOME"
やパラメータ"${USER:-root}"
のいずれかの形式で、コマンド置換を"$(date)"
や"`date`"
、算術展開"$((1 + 2))"
、履歴展開"!!"
やバックスラッシュはエスケープ"\\"
。代わりに単一引用符を使用してください。bashマニュアルのマニュアルページの「引用」というタイトルのセクションを参照してください。