我对我的 bash 命令的行为有疑问。我想将两次相同的通量从 stdout grep 到 2 个不同的文件。为此,我做了:
./prog | tee >(grep -i 'grep1' > file1) | grep -i 'grep2' > file2
但我的 file2 是空的。我以为我grep -i 'grep2'
没有抓住任何东西,但如果我只是输入:
./prog | tee >(grep -i 'grep1' > file1) | grep -i 'grep2'
我确实有我注意的结果:
[grep2] mylog...
[grep2] mylog...
[grep2] mylog...
我设法用这个命令在我的两个文件中写入:
./prog | tee >(grep -i 'grep1' > file1) >(grep -i 'grep2' > file2)
但我必须> /dev/null
在最后添加,以便在标准输出中没有任何输出。
我的问题是,为什么第二个 grep 之后的重定向没有被我的file2
重定向捕获,为什么我必须添加另一个命名管道才能这样做?