Docker不能识别用作参数的bashvariables

我有一个bashvariablesA: A="-v ~/share:/home/docker/share"

我想用它作为创build一个新的docker容器的命令的一部分:

docker run --rm -it $A ubuntu但是docker run --rm -it $A ubuntu说, ~不是path的有效字符( docker run --rm -it $A ubuntu create ~/share: " ~/share" includes invalid characters for a local volume name

如果我运行相同的命令,而不使用$A它的作品:

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

更改

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

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

当你将它存储到一个variables中时,它不会被扩展,它将保持一个文字~ 。 使用$HOME将避免这一点。

不要使用常规variables来保存多个命令参数; 使用数组来代替。

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

即使参数中包含一个字符,在参数展开后,shell可能会专门解释这个字符,这将会起作用。