这是我尝试编写的脚本:
#!/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)并能够通过文件描述符向其发送输入。
这不起作用(“错误的文件描述符”),我认为是因为文件描述符必须与真实文件相关联。然后我需要的是能够创建一个带有关联描述符(例如 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($0),$0}')
关于linux - Bash 脚本 : permanent pipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28643392/