管道后多个命令
# 引用 man bash 中的一句文档
each cmd in a pipeline is executed as a separate process!!!!!!!!!
此处考点:管道后的命令都作为单独的子进程执行
[root@centos8 ~]# echo 1 2 | read x y ; echo x=$x y=$y
x= y=
# 分析
echo 1 2 # 在当前进程中执行
read x y # 开启了子进程,变量赋值仅在子进程中生效
echo x=$x y=$y # 是主进程中的另一条命令。。。主进程中没有 xy 的赋值,因此为空
正确处理方式:在同一子进程中输出变量
[root@centos8 ~]# echo 1 2 | (read x y ; echo x=$x y=$y)
x=1 y=2
[root@centos8 ~]# echo 1 2 | { read x y ; echo x=$x y=$y; }
x=1 y=2
=wan