我可以在本地运行以下循环
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'
这将使用$i
ssh 命令的文字字符,而不是让本地 shell 替换它们。一般来说,您还需要对扩展进行双引号,以防止出现分词问题,尽管对于此处的值来说这并不是绝对必要的。
看: