我正在尝试使用entrypoint.sh创建一个Docker映像并在运行Docker时传递参数,问题是当我想使用带双引号的参数时。
我在很多地方进行搜索,我还知道更多是一个Bash问题,以及如何用双引号将参数扩展,但也许有人对如何避免这种情况有所了解。
我的Dockerfile
:
FROM centos:7
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
我的entrypoint.sh
:
#!/bin/bash
command --display=true "$@"
运行Docker:
docker run -ti docker-image:latest --driver="kernel-4.0 kernel-4.1"
预期行为:
command --display=true --driver="kernel-4.0 kernel-4.1"
实际行为:
command --display=true --driver=kernel-4.0 kernel-4.1
我试图转义双引号,但没有。
答案 0 :(得分:2)
您是否尝试在值之前转义\
?它正在和我一起工作。
#!/bin/bash
echo "all params $@"
command --display=true "$@"
和
docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"
如@David所述,这是bash脚本的预期行为。
如果您在Docker之外运行entrypoint.sh
,它将跳过引号。
./entrypoint.sh --driver="kernel-4.0 kernel-4.1"
#output
all params --driver=kernel-4.0 kernel-4.1
--display=true --driver=kernel-4.0 kernel-4.1