如何在Bourne shell中捕获命令输出到文件描述符?

时间:2009-03-08 23:13:29

标签: shell pipe sh

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

output=$(mycommand)

对于具有大量输出的命令,这需要shell将整个内存分配为一个长字符串。我更愿意找到与Unix C函数popen完全相同的东西,以便从read获得一个新的文件描述符:

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

这甚至可能吗?

1 个答案:

答案 0 :(得分:7)

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

用您选择的命令替换'ls'