Bash 脚本:永久管道

Bash scripting: permanent pipe

这是我尝试编写的脚本:

#!/bin/bash

cat <&3 &   # runs in background, takes input from file desc 3
echo "To Terminal"
...
echo "To cat" 1>&3
echo "to cat again" 1>&3

本质上,我希望我的脚本生成一个程序(在本例中为 cat)并能够通过文件描述符向其发送输入。

这行不通 ("bad file descriptor"),我认为是因为文件描述符必须与真实文件相关联。然后我需要的是能够创建一个 永久管道 和一个关联的描述符(例如 3),我可以在整个程序中使用它来写入 cat 。我该怎么做?

尝试:

#!/bin/bash
exec 3> >(cat)
echo "To Terminal"
echo "To cat" 1>&3
echo "To cat again" 1>&3
exec 3>&-

cat,当然,没有做任何有趣的事情。对于一个仍然简单但稍微更有趣的输出的示例,将 cat 替换为 awk:

exec 3> >(awk '{print NR,length([=11=]),[=11=]}')