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

Escape $() syntax in `docker exec`

我正在尝试 运行 一个以 $() 作为参数的命令(不知道那叫什么)应该在 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)

如何实现?

您可以传入一个带有参数的命令;但该单个命令可以是 shbash.

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

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