use*_*160 3 bash ubuntu environment-variables docker alpine-linux
这打印空白:
docker run --rm --env HELLO="world" ubuntu:18.04 bash -c "echo $HELLO"
Run Code Online (Sandbox Code Playgroud)
但是这有效:
docker run --rm -it --env HELLO="world" ubuntu:18.04 bash
# in the container
echo $HELLO
Run Code Online (Sandbox Code Playgroud)
HELLO 不过似乎传递给了容器:
docker run --rm --env HELLO="world" ubuntu:18.04 env
Run Code Online (Sandbox Code Playgroud)
为什么第一个命令没有看到HELLO?我错过了什么?
由于双引号,$HELLO一旦命令在进入容器之前被执行,docker 主机本身将对其进行评估。因此,您需要$使用反斜杠 ( \)对美元符号 ( ) 进行转义,该反斜杠 ( ) 告诉 bash$是命令本身的一部分,不需要由当前 shell(在我们的示例中为 docker 主机)进行评估,或者使用单引号 ( '') 像这样:
使用单引号
$ docker run --rm --env HELLO="world" ubuntu:18.04 bash -c 'echo $HELLO'
world
Run Code Online (Sandbox Code Playgroud)
使用反斜杠转义
$ docker run --rm --env HELLO="world" ubuntu:18.04 bash -c "echo \$HELLO"
world
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |