子shell
1、在父shell中执行一个shell脚本,可以产生一个子shell
测试环境:
定义一个变量并输出
|
1
2
3
|
[dongzhi@iZ23eyxc0p2Z ~]$ STR=123[dongzhi@iZ23eyxc0p2Z ~]$ echo $STR123 |
编写测试脚本并执行
[
|
1
2
3
4
5
6
7
8
|
dongzhi@iZ23eyxc0p2Z ~]$ cat test.sh#!/bin/bashecho $STR[dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh [dongzhi@iZ23eyxc0p2Z ~]$ export STR[dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh123 |
子shell不能直接使用父shell中定义的变量,需export提升为环境变量
2、在父shell中执行一条命令,在命令的末尾加上& 可以产生一个子shell
|
1
2
3
4
5
6
7
8
|
[dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc[dongzhi@iZ23eyxc0p2Z ~]$ echo $STRabc[dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc&[1] 16467[dongzhi@iZ23eyxc0p2Z ~]$ echo $STR123[1]+ Done STR=abc |
定义一个变量STR赋值123,重新赋值abc,结果变量STR的值为abc,当把第二次赋值末尾加上&,变量STR的值没有变,说明第二次赋值没有 在当前shell,而是开启了一个子shell
3、使用()可以产生一个子shell
|
1
2
|
[dongzhi@iZ23eyxc0p2Z ~]$ STR=123&& (STR=abc) && echo $STR123 |
同上面案例,()中变量赋值不能修改之前变量的值,也产生了子shell
4、在父shell中执行带管道的命令
|
1
2
|
[dongzhi@iZ23eyxc0p2Z ~]$STR=123|STR=456;echo $STR 123 |
打印子shell中的变量
|
1
2
|
[dongzhi@iZ23eyxc0p2Z ~]$ STR=123|{ STR=456;echo $STR; }456 |

浙公网安备 33010602011771号