linux - Bash 脚本 : permanent pipe

标签 linux bash scripting pipe file-descriptor

这是我尝试编写的脚本:

#!/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/

相关文章:

linux - 如何更改ubuntu服务器中的显示

linux - 按搜索顺序显示目录的 bash 脚本

linux - 文件名匹配,区分数字和字符

python - 为 python 脚本创建别名

linux - 如何从 bash shell 脚本中的数组中删除某个字段?

ruby - 将 Ruby 链接到加密库

c - While 循环占用大量 CPU

search - 在文件中查找唯一字符

python - 在远程 Unix 计算机上执行本地脚本时出现问题

linux - 监控服务器上的带宽