我从 Bash 的手册页中学习了 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.
在我的实际应用中,“一些命令”比较复杂,但上面的示例抓住了问题的本质。
需要进程替换<()
。流程替代的替代方案无济于事。