使用ssh通过SSH调用subshel​​l $()来执行bash命令

Sho*_*eNN 2 ssh bash heredoc subshell

我尝试通过ssh发送命令,如下所示:

ssh user@192.168.1.1 "echo $(uname -a)"
Run Code Online (Sandbox Code Playgroud)

但是我的问题是,该$(uname -a)部分实际上创建了一个子外壳,并且不在192.168.1.1服务器上执行,而是在从中执行此命令的系统上执行。

我该如何解决?

PS我的实际示例涉及docker stop all命令,看起来像

docker stop $(docker ps -q)
Run Code Online (Sandbox Code Playgroud)

但我简化了问题。

更新:对不起,我简化了我的问题。我的命令使用Here Document(因为命令内部很复杂,并且使用了许多不同的引号)

ssh user@192.168.1.1 <<SSHCOMMAND
  echo $(uname -a)
SSHCOMMAND
Run Code Online (Sandbox Code Playgroud)

因此,Ignacio Vazquez-Abrams解决方案将不起作用

Sho*_*eNN 7

我找到了解决方案-

ssh user@192.168.1.1 <<'SSHCOMMAND'
  echo $(uname -a)
SSHCOMMAND
Run Code Online (Sandbox Code Playgroud)

对我来说很奇怪,但是有效,感谢 Ignacio Vazquez-Abrams 提供了此过程“替换”的正确名称,我之前找不到:)


Ign*_*ams 5

单引号禁止所有替换。

ssh user@192.168.1.1 'echo $(uname -a)'
Run Code Online (Sandbox Code Playgroud)