bash得到一个管道的fd

时间:2010-06-02 13:18:46

标签: linux bash pipe

为什么以下不起作用?

exec 3<|cat $0

想法是获取管道的文件描述符(3)(| cat $ 0)。

2 个答案:

答案 0 :(得分:2)

你不能以这种方式混合 exec 和管道。看来您需要的是流程替换:

$ exec 3< <(cat /etc/hosts)
$ grep ftp <&3
209.85.41.143 ftp.archlinux.org

http://tldp.org/LDP/abs/html/x17601.html#REDIR1

http://tldp.org/LDP/abs/html/process-sub.html

答案 1 :(得分:0)

exec 3<>$0
while read -u 3 line;
do
  grep ftp $line;
done
exec 3>&-;