1

在 Bourne shell 中捕获命令输出的标准方法是使用以下$()语法:

output=$(mycommand)

但是,对于具有大量输出的命令,这需要 shell 将整个内容作为一个长字符串分配内存。我更愿意找到与 Unix C 函数在道德上等效的东西popen,以获取我可以从中获取的新文件描述符read

newfd=popen(mycommand)
while read -u $newfd LINE; do
  #process output
done

这甚至可能吗?

4

1 回答 1

7
#!bash
ls | while read X
do 
    echo  $X is a directory entry
done

用您选择的命令替换“ls”

于 2009-03-08T23:19:00.857 回答