1. ホーム
  2. bash

[解決済み] Bashのシングルクォートとダブルクォートの違い

2022-03-14 20:08:14

質問

Bashでは、シングルクォート( '' ) とダブルクォート ( "" )?

解決方法は?

シングルクォートでは何も補間されませんが、ダブルクォートでは補間されます。例:変数、バックスティック、ある種の \ エスケープなど

$ echo "$(echo "upg")"
upg
$ echo '$(echo "upg")'
$(echo "upg")

Bashのマニュアルには、このように書かれています。

3.1.2.2 シングルクォート

一重引用符で囲まれた文字( ' ) は、引用符内の各文字のリテラル値を保持します。シングルクォートとシングルクォートの間には、たとえバックスラッシュが前にある場合でも、シングルクォートを入れてはいけません。

3.1.2.3 二重引用符

二重引用符で囲まれた文字( " を除いて、引用符内のすべての文字のリテラル値が維持されます。 $ , ` , \ および、履歴展開が有効な場合。 ! . 文字 $` は、二重引用符の中で特別な意味を持ちます ( シェルの拡張 ). バックスラッシュは、以下の文字のいずれかが続く場合にのみ、特別な意味を持ちます。 $ , ` , " , \ または改行。二重引用符の中では、これらの文字のいずれかが続くバックスラッシュは削除されます。特別な意味を持たない文字に先行するバックスラッシュは,変更されずに残される。二重引用符の前にバックスラッシュを付けると,二重引用符の中で引用することができる。この機能を有効にした場合,ヒストリ展開が行われる。 ! 二重引用符で囲まれた部分はバックスラッシュでエスケープされます。の前にあるバックスラッシュは ! は削除されない。

特殊なパラメータ *@ は、二重引用符で囲まれているときに特別な意味を持ちます ( シェルパラメータ展開 ).