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可能会专门解释这个字符,这将会起作用。