解説
シェルの一重・二重引用符は何が違う?変数展開と空白をBashで確かめよう
シェルで変数を表示したいのに、そのままの名前が出たり、一つの値が分かれたりする。引用符の違いを、架空の短い値で確かめてみよう。

シェルで変数を表示したいのに、そのままの名前が出たり、一つの値が分かれたりする。引用符の違いを、架空の短い値で確かめてみよう。
対象はBash。PowerShellやWindowsのコマンドプロンプトへ、同じ書き方をそのまま当てはめないでね。以下は表示だけの練習で、秘密情報は使わないよ。
一重引用符は文字をそのまま保つ
practice_value='blue card'
printf '<%s>\n' '$practice_value'
表示は<$practice_value>。一重引用符の中では、$practice_valueという文字がそのまま使われる。Bash公式の一重引用符の説明で確認できるよ。
二重引用符では変数を展開する
printf '<%s>\n' "$practice_value"
こちらは<blue card>が一つ表示される。変数を展開しつつ、空白を含む値を一つの引数として扱う例だよ。引数は、コマンドへ渡す一つずつの値のこと。
引用符を外すと、分割などが関係する
printf '<%s>\n' $practice_value
この練習では<blue>と<card>が別の行になる。引用しない変数展開では、単語分割やファイル名展開などが関係するため、任意のファイル名や値を扱うときに注意が必要なんだ。
編集部ではBashの一時的なプロセスで三つの出力を確認した。既存のファイルやシェル設定は変えず、最後に次で練習用の変数を消せるよ。
unset practice_value
二重引用符が何でも無効にするわけではない
Bash公式の二重引用符の説明は、$など一部の文字が特別な意味を保つと説明している。二重引用符へ入れれば、未知のコマンド断片を安全な文字へ変換できる、という意味ではないよ。
秘密の変数の中身を、確認のために画面やログへ表示する必要はない。実際のデプロイ設定では、値の表示ではなく、設定の有無や対象を確認しよう。Composeの.envとenv_fileで扱う設定ファイルと、シェルがコマンドを解釈する段階も分けて考えてね。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。