常见坑
1 子父进程 管道
管道的最基本作用就是衔接输入输出;
bash是解释执行!他在命令中看到管道符的时候会将管道符前边的开启一个子进程,管道符之后的也开启一个子进程,然后利用pipe进行串联;
[binc@localhost ~]$ a=1[binc@localhost ~]$ echo $a # 输出变量1[binc@localhost ~]$ { a=2;echo "nihhao"; } | cat # | 管道符nihhao[binc@localhost ~]$ echo $a #进程隔离,父进程拿不到子进程的变量 想要用的话两个方法 1:export变成环境变量 2 写入文件然后父进程读文件1[binc@localhost ~]$ { echo $a;a=2;echo $a; } | cat #子进程能够拿到父进程的变量12[binc@localhost ~]$[binc@localhost ~]$ echo $$3760[binc@localhost ~]$ echo $$ |cat # $$ $BASHPID都是当前进程pid,区别是$$的优先级高于管道符;$$被优先解释成3760之后才解释了管道符的含义3760[binc@localhost ~]$ echo $BASHPID | cat #bash是解释执行!他在命令中看到管道符的时候会将管道符前边的开启一个子进程,管道符之后的也开启一个子进程,然后利用pipe进行串联两个子进程的标准输入和标准输出; 所以输出的当前进程号与命令窗口的不一样;3849[binc@localhost ~]$
