转义`docker exec`中的$()语法

时间:2018-03-02 21:21:45

标签: bash docker command-substitution

我正在尝试运行一个命令,其中$()作为参数(不确定是什么叫)应该在Docker容器中进行评估。例如:

docker exec mycontainer echo $(whoami)

执行此操作时,首先在主机上运行whoami,然后插入主机的用户。相反,我希望在容器中评估whoami命令,以便容器的用户被回显。

我发现很难找到任何帮助。我试过的替代方案不起作用:

docker exec mycontainer 'echo $(whoami)'
docker exec mycontainer echo '$(whoami)'
docker exec mycontainer echo $$(whoami)
docker exec mycontainer echo \$(whoami)

如何实现这一目标?

1 个答案:

答案 0 :(得分:6)

您可以使用参数传入单个命令;但该单个命令可以是shbash

docker exec mycontainer sh -c 'echo $(whoami)'

如果你需要在脚本片段中使用Bash语法(这实际上可以是任意复杂的;如果你需要引号内的单引号,可以使用几种常见的解决方法)那么显然使用bash代替{{1 }}