私のDockerfileでは、文字列の変数を置き換えたいと思います。
ARG w=world
RUN echo 'Hello $w'
出力をHello world
にしたいのですが、実際の出力はHello $w
です。
RUN echo "Hello $w"
正常に動作します。 ARGは二重引用符で囲まれて解決されます。
Dockerは、RUNコマンドのARG値を展開しません。代わりに、ARGを環境変数として挿入します。シェル自体が変数を展開し、私が使用したすべてのLinuxシェルの動作は、引用符のタイプに基づいて異なります。
単一引用符はシェルに何も展開しないように指示し、単一引用符とエスケープ文字のみをエスケープする必要があります。二重引用符には、他の多くのエスケープ文字とともに変数展開が含まれています。詳細については、シェルのmanページを参照してください。
したがって、すでに見つけた解決策は次のとおりです。
RUN echo "Hello $w"