Docker:带有参数和引号的入口点
Docker: Entrypoint with arguments and quotes
我正在尝试创建一个带有 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
我尝试转义双引号但没有。
您是否尝试在值之前转义 \
?它和我一起工作。
#!/bin/bash
echo "all params $@"
command --display=true "$@"
和
docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"
如@David 所述,这是 bash 脚本的预期行为。
如果 运行 entrypoint.sh
在 Docker 之外,它将跳过引号。
./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
How to keep quotes in Bash arguments?
我正在尝试创建一个带有 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
我尝试转义双引号但没有。
您是否尝试在值之前转义 \
?它和我一起工作。
#!/bin/bash
echo "all params $@"
command --display=true "$@"
和
docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"
如@David 所述,这是 bash 脚本的预期行为。
如果 运行 entrypoint.sh
在 Docker 之外,它将跳过引号。
./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
How to keep quotes in Bash arguments?