BashのmanページからBashプロセスの置換を学びました。残念ながら、この機能の未熟な使い方は醜いです。
DEV=<(some commands that produce lines of data) && {
while read -u ${DEV##*/} FIELD1 FIELD2 FIELD3; do
some commands that consume the fields of a single line of data
done
}
熟練したプログラマーには、これを行う他の方法がありますか?
実行可能なサンプルが必要な場合は、これを試してください。
DEV=<(echo -ne "Cincinnati Hamilton Ohio\nAtlanta Fulton Georgia\n") && {
while read -u ${DEV##*/} FIELD1 FIELD2 FIELD3; do
echo "$FIELD1 lies in $FIELD2 County, $FIELD3."
done
}
出力例:
Cincinnati lies in Hamilton County, Ohio.
Atlanta lies in Fulton County, Georgia.
私の実際のアプリケーションでは、「一部のコマンド」はより複雑ですが、上記のサンプルは質問の本質を捉えています。
プロセスの代替<()
が必要です。プロセス代替の代替手段は役に立ちません。