shell中的管道,comm1|comm2,就是命令comm1的stdout注意不是stderr传递给命令2comm2的stdin。
并且comm1和comm2是同时启动的2个subshell。
 
观察系统中的sleep进程:
可见管道两边的进程是同时触发的。
 
 

这个为什么没有被赋值?结合上面的说明可以知道echo $var是在read var的父进程中
执行的,而父进程是不会反过来继承子进程的变量的
正确的写法如下
或者
 
可见确实是在子进程中执行.