我希望做这样的事:
echo 'foo' >&3 3| cat基本上,我想将'foo‘写到3,然后只将3中的数据输送到cat。但上面的话行不通,我明白:
bash: 3: Bad file descriptor有人知道我想做什么吗?
关于Node.js,我有一个工作示例,这里是:https://gist.github.com/ORESoftware/0ad178f4512bbf956e54dd08f2412883
在这个看似可靠的Node.js gist中,我们在命令行中这样做:
node foo.js 3> some-file.sh在节点过程中,我们将写入3文件描述符。
但我想知道如何使用管道而不是重定向。
就像这样:
node foo.js 3| cat发布于 2019-08-26 07:15:52
您可以不使用流程替换,也不需要混合fd 1和3或fd 1和2:
producer(){ echo to_out; echo >&2 to_err; echo >&3 to_fd3; }
consumer(){ sed "s/^/consumer $@: /" >/dev/tty; }
{ producer 3>&1 >&4 | consumer 3; } 4>&1 | consumer 1
to_err
consumer 1: to_out
consumer 3: to_fd3
{ producer 3>&1 >&4 | consumer 3; } 4>&1
to_out
to_err
consumer 3: to_fd3发布于 2019-08-26 06:02:49
不完全是通过工艺替代而成的管道:
# cmd 3> >(cat)或者,如果您可以混合fd3和stdout的输出,
# cmd 3>&1 | cat发布于 2019-08-26 06:12:27
因此,对于bash,这是有效的:
exec 3<> >(cat > temp.sh)
echo a >&3 # write to it
exec 3>&- # close fd 3.但我想知道是否有一种不那么冗长的方法来做到这一点。而不用过程替代,而不用管道。
https://unix.stackexchange.com/questions/537426
复制相似问题