高度なBashスクリプトガイドを読んでいる間、このトピックについて混乱しました。本によると、
Bashスクリプトでは、文字列を引用するときに文字列を分離し、文字通りの意味を保護します。
そして
エスケープは個々の文字を引用する方法です。文字の前のエスケープ文字(\)は、シェルに文字通り解釈するように指示します。
これは「機能的」文字のように見えますが、\
二重引用符に含まれている場合はどうなりますか?文字通り受け入れるのか\
、それともまだエスケープされるのか?例えば、
echo \z # z
echo "\z" # \z seems that the backslash is taken literally
echo \\ # \
echo "\\" # \ so why this result is not \\ ?
答え1
man bash
:
文字を二重引用符で囲むと、$、`、\、[...]を除いて、引用符内のすべての文字のリテラル値が保持されます。バックスラッシュは、$、`、"、\、または改行文字のいずれかが後に続く場合にのみ特別な意味を維持します。