Bashスクリプト:ファイル循環

Bashスクリプト:ファイル循環

いくつかの行を含むファイルがあります。

/snapshot/200
/snapshot/201
/snapshot/202

これで、各行とIFSループを使用していくつかの操作を実行しようとしています。

while IFS=' ' read -r test || [ -n "${test}" ];
do
    if ssh root@$TARGET "[ ! -d $test ]"
    then
        echo "${test}"
    fi
done < $filelist

ここでの問題は、1つの結果のみを取得し、ファイル全体を繰り返さないことです。これらの名前のディレクトリが存在しないため、ifステートメントは正確でなければなりません。

しかし、全体のif部分を削除して使用するだけ

echo "${test}"

ループが機能します。

答え1

sshループから標準入力ストリームを継承し、から読み取った最初の行を除くファイル全体をwhile読み込みます。$filelistread

sshこの操作を中止するには、ssh -nまたはを使用しますssh ... </dev/null

sshこのように作業すると、以下のように単純なリダイレクトまたはパイプを介してリモートシステムにデータを渡すことができます。

ssh remote 'cat >remotefile' <localfile

皆さんも見てください」パイプ、リダイレクト、およびリモート接続を含むシェルコマンドを理解するのに役立ちます。」。

関連情報