bash - 使用 Here Document 通过 ssh 调用子 shell $() 执行 bash 命令

标签 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 Document(因为内部命令很复杂,使用了很多不同的引号)

ssh user@192.168.1.1 <<SSHCOMMAND
  echo $(uname -a)
SSHCOMMAND

所以 Ignacio Vazquez-Abrams 的解决方案是行不通的

最佳答案

单引号抑制所有替换。

ssh user@192.168.1.1 'echo $(uname -a)'

关于bash - 使用 Here Document 通过 ssh 调用子 shell $() 执行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523398/

相关文章:

linux - 如何避免 <defunct> 进程?

hadoop - 跨服务器将压缩文件移动到Hadoop HDFS

ssh - 如何让 Hudson CI 通过 SSH 检查 CVS 项目?

PHP eval 和 heredoc 不能很好地发挥作用

bash - @<(cat <<- EOF 在 Bash 中做了什么?

JavaScript 定界符?转义换行符 : JSLint Bad Escapement?

bash - 在 bash "for file in $list"构造中一次取两个

python - 使用 python 子进程将文件从 .sam 转换为 .bam

linux - Bash 脚本 - 从第 "c"行开始显示文件

macos - 使用 Sed Mac 终端查找并替换为空格