
私は以下を試しました:
myprogram $'Hello $HOME'
しかし、うまくいきません(受信したコマンドライン引数は値ではありませんmyprogram
)。Hello $HOME
$HOME
答え1
Cスタイルのバックスラッシュエスケープが解釈されることを除いて、一重引用符で囲まれた文字列$'...'
のように機能します。少なくともBashマニュアルは最後にこれを言及します。ANSI-Cリファレンスページ:
拡張結果は、ドル記号がないかのように単一引用符で囲まれます。
だからではない。これがおそらく一重引用符(またはその逆)を使用することを選択した理由です。その機能の記録はわかりませんが、言葉です。
二重引用符を使用し、必要に応じて引用符を変更する必要があります。つまり
$ myprogram "Hello $HOME"
またはタブと混合
$ myprogram $'Hello\t'"$HOME"
答え2
あなたはそれを書く必要があります
$ myprogram "Hello $HOME"
Bashは、$、`(バックティック)、またはを除いて二重引用符内のすべての内容の文字通りの意味を保持します。したがって、ここでは「Hello」を値として扱い、$ Helloはその値を変数として保持します。