mrb*_*t01 5 linux bash quotes docker
我正在尝试使用entrypoint.sh 创建一个Docker 映像,并在运行Docker 时传递参数,问题是当我想使用带双引号的参数时。
我在很多地方搜索,我也知道更多的是 Bash 问题以及如何通过双引号扩展参数,但也许有人知道如何避免这种情况。
我的Dockerfile:
FROM centos:7
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
我的entrypoint.sh:
#!/bin/bash
command --display=true "$@"
Run Code Online (Sandbox Code Playgroud)
运行 Docker:
docker run -ti docker-image:latest --driver="kernel-4.0 kernel-4.1"
Run Code Online (Sandbox Code Playgroud)
预期行为:
command --display=true --driver="kernel-4.0 kernel-4.1"
Run Code Online (Sandbox Code Playgroud)
实际行为:
command --display=true --driver=kernel-4.0 kernel-4.1
Run Code Online (Sandbox Code Playgroud)
我尝试转义双引号,但什么也没有。
\值之前你有尝试过逃跑吗?它正在和我一起工作。
#!/bin/bash
echo "all params $@"
command --display=true "$@"
Run Code Online (Sandbox Code Playgroud)
和
docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"
Run Code Online (Sandbox Code Playgroud)
正如@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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22039 次 |
| 最近记录: |