在 Bourne shell 中捕获命令输出的标准方法是使用以下$()
语法:
output=$(mycommand)
但是,对于具有大量输出的命令,这需要 shell 将整个内容作为一个长字符串分配内存。我更愿意找到与 Unix C 函数在道德上等效的东西popen
,以获取我可以从中获取的新文件描述符read
:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
这甚至可能吗?