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'

$iローカルシェルがそれを置き換えるのではなく、sshコマンドのリテラル文字を使用します。一般的に言えば、ここでは値に必ずしも必要ではありませんが、単語の分離の問題を防ぐために拡張を二重引用符で囲むことをお勧めします。

望むより:

関連情報