测试指令如下:
docker run -it -e VAR='abc' centos:7 bash
[root@541b2bdd4a9d /]# echo $VAR
abc
[root@541b2bdd4a9d /]# VAR=def echo $VAR
abc
[root@541b2bdd4a9d /]#
1
wxg4net 2020-07-09 20:27:12 +08:00
这和 Docker 没有关系,即使本地 shell 也不支持你这种用法.应该是 echo 不支持这种写法
VAR=def; echo $VAR VAR=def && echo $VAR 这样就可以 |
4
dangyuluo 2020-07-09 20:31:11 +08:00 1
这是 shell 的特色,echo $VAR 在 被 shell 执行前,$VAR 就已经被替换为 abc 这个值了。shell 实际执行的是`VAR=def echo abc`这个指令
|
5
aloxaf 2020-07-09 20:43:14 +08:00 1
1. VAR=VALUE COMMAND 这种格式是为 COMMAND 临时设定**环境变量**
2. 这个地方 $VAR 没有单引号,是由 shell 自己展开的,当然即使加了引号也没用,因为 echo 是内部命令。 这样就有效果了:VAR=value bash -c 'echo $VAR' |