host1$ ssh host2 cmd1 | cmd2
cmd2 は host1 または host2 で実行されますか?
例えば:
host1$ ssh host2 ls -1 / | wc -l
この例ではwc -l
、host1 または host2 で実行されますが、なぜですか?
シェルは「|」を認識するため、ローカル ホストで実行されます。ssh を呼び出す前にパイプとして。
cmd2として「echo $HOSTNAME」を使用すると、明らかに正しい答えが得られます
パイプは最初のコマンドを終了するため、host2 で実行されます。host1 で cmd2 を実行するには、パイプをエスケープします。
host1$ ssh host2 cmd1 \| cmd2