二重引用符内の一重引用符とBashリファレンスマニュアル

二重引用符内の一重引用符とBashリファレンスマニュアル

「二重引用符」というセクション3.1.2.3では、Bashマニュアルは次のように述べています。

文字を二重引用符( ''')で囲むと、履歴拡張が有効になっている場合は、 '$'、 '''、 '\'、および '!'以外の引用符内のすべての文字のリテラル値が保持されます。

現在、私の興味は一重引用符(')です。

前のセクションセクション3.1.2.2で説明した特別な意味は次のとおりです。

文字を一重引用符(')で囲むと、引用符内の各文字のリテラル値が保持されます。前にバックスラッシュがある場合でも、一重引用符の間に一重引用符を使用することはできません。

これら二つの議論を総合すると、

 echo "'$a'"

変数がa定義されていない場合(したがって= null文字列)、内部的に特別な解釈を隠す特別な意味があるため、画面に印刷する必要があります$a。代わりにこれが印刷されます。なぜですか?$a''$''

ベストアンサー1

'例の一重引用符文字は二重引用符()で囲まれているechoため、リテラル値を取り、意味を失います。"囲まれた文字は二重引用符です。

あなたができることは、単一引用符を個別に印刷することです:

echo "'"'$a'"'"

または脱出するには$

echo "'\$a'"

おすすめ記事