035-老男孩教育每日一题-怎样产生一个子shell?
1、在父shell中执行一个shell脚本,可以产生一个子shell
测试环境:
定义一个变量并输出
1 2 3 | [dongzhi@iZ23eyxc0p2Z ~]$ STR=123 [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR 123 |
编写测试脚本并执行
1 2 3 4 5 6 7 8 | dongzhi@iZ23eyxc0p2Z ~]$ cat test.sh #!/bin/bash echo $STR [dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh [dongzhi@iZ23eyxc0p2Z ~]$ export STR [dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh 123 |
子shell不能直接使用父shell中定义的变量,需export提升为环境变量
2、在父shell中执行一条命令,在命令的末尾加上& 可以产生一个子shell
1 2 3 4 5 6 7 8 | [dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR abc [dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc& [1] 16467 [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR 123 [1]+ Done STR=abc |
定义一个变量STR赋值123,重新赋值abc,结果变量STR的值为abc,当把第二次赋值末尾加上&,变量STR的值没有变,说明第二次赋值没有 在当前shell,而是开启了一个子shell
3、使用()可以产生一个子shell
1 2 | [dongzhi@iZ23eyxc0p2Z ~]$ STR=123&& (STR=abc) && echo $STR 123 |
同上面案例,()中变量赋值不能修改之前变量的值,也产生了子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 |
今天是每日一题陪伴大家的第35天,期待你的进步。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
继续阅读