#!/bin/bash
mkfifo /var/run/out
while true
do
cat /var/run/out | nc -l 8080 > >(
while read line
do
do some stuff
done
)
done
nc
合計のpidをどのように取得できますかcat
? $!を使用すると機能しません。 pidファイルに書きたいです。
ベストアンサー1
必要なものを実行するよりエレガントな方法があるかもしれませんが、次のように動作します。
do
(cat /var/run/out& echo $! > cat_pid; wait) |
(nc -l 8080 <&0 & echo $! > nc_pid; wait) > >(
︙
(読みやすくするために、末尾を別々の行に分割しました|
)まで待つのです。 (実際には、コマンドを前景に戻します。)スコット <&0
非同期プロセスがスクリプトから正しい標準入力を読み取るようにするためのヒントです。
しかし、なぜ「猫」を使うのですか??そして> >(…)
単純パイプの代わりになぜ使用しましたか??
これは次のように単純化できます。
本当ではありますが する (nc -l 8080 < /var/run/out & echo $! > nc_pid; 待機) | 行を読むとき する 何かをしなさい 完璧 完璧
nc
直接読み、/var/run/out
プロセスの置き換えの代わりに単純なパイプを使用してください。