LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 691|回复: 8

请教关于置顶的“一个命令的输出分发给2个命令进行处理”

[复制链接]
发表于 2005-12-13 12:09:35 | 显示全部楼层 |阅读模式
cmd1 | tee >(cmd2)|cmd3
是不是不等于
cmd1|cmd3
cmd1|cmd2

谢谢!
发表于 2005-12-13 20:02:25 | 显示全部楼层
基本上没错。。。除非cmd1输出的结果不一样。:)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-13 20:25:56 | 显示全部楼层
斑竹可能漏看到“不”
回复 支持 反对

使用道具 举报

发表于 2005-12-14 07:34:26 | 显示全部楼层
一时。走眼了。。。

他们基本上相等。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-14 11:10:42 | 显示全部楼层
不过
echo abc|tee >(tr 'a-z' 'A-Z')|sed 's/a/9/'的结果是:
9bc
Abc

echo abc|tee >('sed 's/a/9/')|tr 'a-z' 'A-Z' 的结果是:
ABC
9BC


好象
cmd1 | tee > (cmd2) | cmd3
等价于:
cmd1 | cmd3
cmd1 | cmd2 | cmd3


再请教,谢谢!
回复 支持 反对

使用道具 举报

发表于 2005-12-14 11:22:49 | 显示全部楼层
唉,高人们谈论的东西,小弟不懂!
回复 支持 反对

使用道具 举报

发表于 2005-12-14 23:02:29 | 显示全部楼层
Post by sosogh
不过
echo abc|tee >(tr 'a-z' 'A-Z')|sed 's/a/9/'的结果是:
9bc
Abc

echo abc|tee >('sed 's/a/9/')|tr 'a-z' 'A-Z' 的结果是:
ABC
9BC

好象
cmd1 | tee > (cmd2) | cmd3
等价于:
cmd1 | cmd3
cmd1 | cmd2 | cmd3
再请教,谢谢!


下面这条语句执行时,首先会建立两个管道,cmd1的标准输出连接到tee的标准输入,tee的输出到标准输出的部分连接到cmd3的标准输入,tee的输出到文件的部分重定向到(cmd2) , 而(cmd2)的标准输出也作为cmd3的标准输入.
cmd1 | tee > (cmd2) | cmd3

所以,才会有你上面的结果.
首先,说一下这个 echo abc|tee >(tr 'a-z' 'A-Z')|sed 's/a/9/'
字符串"abc"经过tee被送到sed处理,得到 9bc
字符串"abc"经过tee被送到(tr 'a-z' 'A-Z')处理,得到ABC,然后会再次送给sed处理,但是此时没有小写字母,所以输出结果不受影响,仍为:ABC (你的第一个输出结果写错了吧?)

再说一下 echo abc|tee >(sed 's/a/9/')|tr 'a-z' 'A-Z'
字符串"abc"经过tee被送到tr处理,得到ABC
字符串"abc"经过tee被送到(sed 's/a/9')处理,,得到9bc, 然后9bc 会送给后面的tr处理,由于9bc
里面有小写子母,所以全部转换成大写,所以就得到了 9BC

如果改一下就可以得到小写的 9bc了,改为:echo abc|tee >(sed 's/a/9/' >&2 )|tr 'a-z' 'A-Z'
回复 支持 反对

使用道具 举报

发表于 2005-12-14 23:23:11 | 显示全部楼层
echo abc|tee >(sed 's/a/9/' >&2 )|tr 'a-z' 'A-Z'
会输出:
ABC
9bc
但是,下面的输出,我就有点不明白了
echo abc|tee >(sed 's/a/9/')>&2 |tr 'a-z' 'A-Z'
会输出:
abc
9BC

这个小写的abc是怎么得来的呢?
回复 支持 反对

使用道具 举报

发表于 2005-12-14 23:51:32 | 显示全部楼层
echo abc|tee >(sed 's/a/9/')>/dev/null|tr 'a-z' 'A-Z'
输出:
9BC

echo abc|tee >(sed 's/a/9/')>/dev/null
输出:
9bc

从而得出结论:
>/dev/null 重定向的是tee的输出到标准输出的内容
而(sed 's/a/9/') 的输出依然会被送到后面的tr处理

不知道分析的对不对?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表