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

Pie*_*sma 4 bash command-substitution docker

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

docker exec mycontainer echo $(whoami)
Run Code Online (Sandbox Code Playgroud)

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

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

docker exec mycontainer 'echo $(whoami)'
docker exec mycontainer echo '$(whoami)'
docker exec mycontainer echo $$(whoami)
docker exec mycontainer echo \$(whoami)
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

tri*_*eee 9

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

docker exec mycontainer sh -c 'echo $(whoami)'
Run Code Online (Sandbox Code Playgroud)

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