0

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.

私の実際のアプリケーションでは、「一部のコマンド」はより複雑ですが、上記のサンプルは質問の本質を捉えています。

プロセスの代替<()が必要です。プロセス代替の代替手段は役に立ちません。

4

2 に答える 2