子shell

圆括号里的命令列表
( 命令1; 命令2; 命令3; ... ) 
嵌在圆括号里的一列命令在一个子shell里运行。

注意:  在子shell里的变量不能被这段子shell代码块之外外面的脚本访问.这些变量是不能被产生这个子shell的父进程(parent process)存取的,实际上它们是局部变量(local variables)。

简单来说就是小括号里面的命令会生成一个子shell,在子shelll里面运行。子shell继续父类的变量,但子shell修改的变量不会影响到父类。

例如:

str=hello

echo $str

{

  str=hellotest

  echo $str

}

echo $str

--------------------------------------

运行结果:

hello

hellotest

hello         #第三次打印,结果还是hello,因为子shell没有修改父shell的变量的值。

  在以上代码的括号里面和括号外面都加上一句打印当前shell的pid, echo $$。

str=hello

echo $$

echo $str

{

  str=hellotest

  echo $str

  echo $$

}

echo $str

------------------------------------------

运行脚本发现两个地方打印出来的pid都是一样的,为什么父shell和子shell的pid是一样的?子shell复制了父shell的环境。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值