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

问题描述 投票:1回答:1

我正在尝试运行一个命令,其中有一个$()作为参数(不确定那个叫什么)应该在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)

怎么能实现这一目标?

bash docker command-substitution
1个回答
6
投票

您可以使用参数传递单个命令;但是那个单一命令可以是shbash

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

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

© www.soinside.com 2019 - 2024. All rights reserved.