いくつかの行を含むファイルがあります。
/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
読み込みます。$filelist
read
ssh
この操作を中止するには、ssh -n
またはを使用しますssh ... </dev/null
。
ssh
このように作業すると、以下のように単純なリダイレクトまたはパイプを介してリモートシステムにデータを渡すことができます。
ssh remote 'cat >remotefile' <localfile
皆さんも見てください」パイプ、リダイレクト、およびリモート接続を含むシェルコマンドを理解するのに役立ちます。」。