2017-10-23 5 views
0

として使用bashの変数を認識しません。私はそれが動作$Aを使用せずに同じコマンドを実行すると~は(create ~/share: " ~/share" includes invalid characters for a local volume nameドッカーは、私はbashの変数Aを持っている引数

パスの有効な文字ではない、と言う:

A="-v $HOME/share:/home/docker/share" 

~からdocker run --rm -it -v ~/share:/home/docker/share ubuntu

答えて

5

変更

A="-v ~/share:/home/docker/share" 

あなたは変数にそれを格納するとき、それは文字通り~残る展開されません。 $HOMEを使用するとこれが回避されます。

+0

@acro444が正しい。 man shから、Tilde Expansion(ユーザのホームディレクトリを置き換える)引用符で囲まれていないチルダ文字(〜)で始まる単語は、チルダ拡張されます。 –

+0

一般に、複数の引数を格納するために通常の変数を使うべきではありません。 – chepner

1

複数のコマンド引数を保持するために通常の変数を使用しないでください。代わりに配列を使用してください。

A=(-v ~/share:/home/docker/share) 
docker run --rm -it "${A[@}}" ubuntu 

これは、引数がパラメータが展開された後、シェルがそれ以外の場合は、特別に解釈する文字が含まれている場合でも動作します。

関連する問題