【发布时间】:2009-03-08 23:13:29
【问题描述】:
在 Bourne shell 中捕获命令输出的标准方法是使用 $() 语法:
output=$(mycommand)
但是,对于具有大量输出的命令,这需要 shell 将整个内容作为一个长字符串分配内存。我更愿意找到与 Unix C 函数 popen 道德等价的东西,以获取我可以从 read 获取的新文件描述符:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
这可能吗?
【问题讨论】:
-
bash4 有一个不错的新特性:coproc。这将是您的理想选择!太糟糕了,它还是那么新