【发布时间】:2014-08-02 11:17:53
【问题描述】:
我很确定我缺少这方面的术语,这可能是谷歌让我失望的原因。是否有一种可移植且简单的方法将标准输出重定向到多个命令。
换句话说,我该如何解决这个可移植性问题:
$ /bin/bash -c '(echo to your mom) | tee >(read b; echo "agent 1 reports $b") >(read b; echo "agent 2 reports $b") >(read b; echo "agent 3 reports $b")'
to your mom
agent 1 reports to your mom
agent 2 reports to your mom
agent 3 reports to your mom
$ /bin/zsh -c '(echo to your mom) | tee >(read b; echo "agent 1 reports $b") >(read b; echo "agent 2 reports $b") >(read b; echo "agent 3 reports $b")'
to your mom
agent 1 reports to your mom
agent 3 reports to your mom
agent 2 reports to your mom
$ /bin/sh -c '(echo to your mom) | tee >(read b; echo "agent 1 reports $b") >(read b; echo "agent 2 reports $b") >(read b; echo "agent 3 reports $b")'
/bin/sh: 1: Syntax error: "(" unexpected
请注意,输出排序不是问题,/bin/sh 产生错误是问题。
【问题讨论】:
标签: shell unix pipe portability file-descriptor