如何通过 ssh 发送带有变量的表达式?

如何通过 ssh 发送带有变量的表达式?

我可以在本地运行以下循环

for i in A B C; do mycommand $i; done

现在我正尝试将其发送过来ssh

以下版本

ssh myhost for i in A B C; do mycommand $i; done

以下版本

ssh myhost "for i in A B C; do mycommand $i; done"

也失败了,因为它需要i本地变量。

如何处理?


有没有通用的方法,例如,如果mycommand是另一个 ssh 怎么办?

ssh myhost 'for i in hos1 host2 host3; do ssh "$i" ... another for expression

答案1

只需使用单引号:

ssh myhost 'for i in A B C; do mycommand "$i"; done'

这将使用$issh 命令的文字字符,而不是让本地 shell 替换它们。一般来说,您还需要对扩展进行双引号,以防止出现分词问题,尽管对于此处的值来说这并不是绝对必要的。

看:

相关内容