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解决方案将不起作用
我找到了解决方案-
ssh user@192.168.1.1 <<'SSHCOMMAND'
echo $(uname -a)
SSHCOMMAND
Run Code Online (Sandbox Code Playgroud)
对我来说很奇怪,但是有效,感谢 Ignacio Vazquez-Abrams 提供了此过程“替换”的正确名称,我之前找不到:)
| 归档时间: |
|
| 查看次数: |
2230 次 |
| 最近记录: |