通过ssh调用subshell$()并使用Here文档执行bash命令
我尝试通过ssh发送命令,如下所示:通过ssh调用subshell$()并使用Here文档执行bash命令,bash,ssh,heredoc,subshell,Bash,Ssh,Heredoc,Subshell,我尝试通过ssh发送命令,如下所示: ssh user@192.168.1.1 "echo $(uname -a)" 但我的问题是,$(uname-a)部分实际上创建了一个子shell,并不是在192.168.1.1服务器上执行,而是在我的系统上执行,我从中执行了这个命令 我怎样才能修好它 另外,我的实际示例涉及docker stop all命令,如下所示 docker stop $(docker ps -q) 但我简化了问题 更新: 对不起,我把问题简化了。我的命令使用Here文档(因为内
ssh user@192.168.1.1 "echo $(uname -a)"
但我的问题是,$(uname-a)
部分实际上创建了一个子shell,并不是在192.168.1.1服务器上执行,而是在我的系统上执行,我从中执行了这个命令
我怎样才能修好它
另外,我的实际示例涉及docker stop all命令,如下所示
docker stop $(docker ps -q)
但我简化了问题
更新:
对不起,我把问题简化了。我的命令使用Here文档(因为内部命令很复杂,并且使用了很多不同的引号)
sshuser@192.168.1.1单引号抑制所有替换
ssh user@192.168.1.1 'echo $(uname -a)'
我发现-
sshuser@192.168.1.1谢谢,您的解决方案很好,但我添加了更复杂的示例,它更接近我的实际命令。请参阅“重定向”一节底部附近的“man sh”。所有这些都记录在那里。
ssh user@192.168.1.1 'echo $(uname -a)'
ssh user@192.168.1.1 <<'SSHCOMMAND'
echo $(uname -a)
SSHCOMMAND