さて、私は最近、標準入力スタイルの行を対話型コマンドにフィードするためのヒア ドキュメントの魔法を発見しました。ただし、これをSSHで使用してリモートサーバーで一連のコマンドを実行しようとしていますが、追加のコマンドを実行する前に実際の入力をパイプする必要があり、さらに問題を混乱させる必要がありますいくつかの結果も取得する必要があります戻る ;)
これが私が使おうとしているものです:
#!/bin/sh
RESULT=$(find -type f "$PATH" | gzip | ssh "$HOST" <<- 'REMOTE_SYNC'
cat > "/tmp/.temp_file"
# Do something with /tmp/.temp_file
REMOTE_SYNC
これは果たして正しいのでしょうか?私が抱えている問題の一部は、データを /tmp のそのファイルにパイプする必要があることですが、実際にはランダムな名前の一時ファイルを生成する必要がありますが、どのようにそれを行うことができるかわかりません。変数に名前を付けて(変数に戻ることができるように)、標準入力を変数に送信します。
find | を抽出することもできます。最初にローカルで実行される別のコマンドに gzip 部分を追加します。gzip 圧縮されたファイルはおそらく十分に小さいため、準備が整ったときに送信すると、SSH 接続がはるかに短くなり、生成されたときに送信されますが、それでもその事実を回避することはできません。標準入力と追加コマンドの両方を SSH に提供できる必要があります。