、在父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天,期待你的进步。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
http://lidao.blog.51cto.com/3388056/1914205
本文转自 李导 51CTO博客,原文链接:http://blog.51cto.com/lidao/1919355