定義された間隔でサーバーにデータを送信するためにフォルダーを継続的に繰り返すbashスクリプトを作成しています。私はサーバーに接続し、データを送信するツールとしてnetcatを使用します。私の擬似コードは次のとおりです。
while true
do
read_folder()
process_data() > result.txt
cat result.txt > netcat ip port
wait 10 sec
done
私の唯一の問題は、この場合、クライアントが毎回TCP / IP接続からサーバーに接続し、切断することです。スクリプトの先頭で接続を確立し、最後で閉じることを好みます。
Bashスクリプトのコマンドラインツールを使用してこれを行う方法はありますか?
答え1
ループの外側にリダイレクトを入れるだけです。
while true; do
read_folder
process_data
sleep 10
done | netcat $ip $port
ループ内からループの標準出力に出力が必要な場合は、別のファイル記述子を介して切り替えます。
{
while true; do
read_folder
echo tick >&3
process_data
sleep 10
done | netcat $ip $port
} 3>&1
答え2
2つの別々のプロセス:1つはresult.txtをnetcatにコピーします。 Result.txt は他のプロセスを通じて提供されます。
echo -n >result.txt
tail -f result.txt | nc ip port &
while true
do
read_folder()
process_data() > result.txt
wait 10 sec
done