![subshell 和输入/输出重定向问题](https://linux22.com/image/190732/subshel%E2%80%8B%E2%80%8Bl%20%E5%92%8C%E8%BE%93%E5%85%A5%2F%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E9%97%AE%E9%A2%98.png)
我有几个关于 shell i/o 行为的问题
echo apple | echo banana
这里的输出只是
banana
但在这个命令中:
echo apple | { echo banana; tail; }
输出是
banana
apple
为什么香蕉先出现在苹果之前?为什么苹果看起来不像第一个命令,发生了什么?
echo apple | { echo banana; rev; }
上面命令的输出是
banana
elppa
为什么苹果会被逆转,而不是香蕉?是因为echo banana; rev;
同时执行吗?
echo apple >&2 | { echo banana; rev; }
上面命令的输出:
banana
apple
与之前的命令相比,这对我来说是有意义的,因为我们让 apple 转到错误输出并且rev
只接受标准输出。
echo apple >&2 | { echo banana; rev; } | tac
输出:
apple
banana
我不确定为什么tac
要颠倒行的顺序,它是否也考虑了错误输出?
{ echo apple >&2; echo banana; } | rev | tac
输出:
apple
ananab
我认为这里苹果没有得到,rev
因为它是错误输出,而香蕉却得到了,但为什么会tac
这样