当前位置: 技术问答>linux和unix
shell变量和子shell的问题请教
来源: 互联网 发布时间:2016-09-13
本文导语: 按照书上说,使用()将shell命令扩起来,会产生一个子shell,命令在子shell中执行。 那么一个shell变量,应该在子shell中无效吧? $>test=true $>echo $test true $>(echo $test;exit 0) true $>sh >echo $test > 如果显式的启动一个子...
按照书上说,使用()将shell命令扩起来,会产生一个子shell,命令在子shell中执行。
那么一个shell变量,应该在子shell中无效吧?
$>test=true
$>echo $test
true
$>(echo $test;exit 0)
true
$>sh
>echo $test
>
如果显式的启动一个子shell,那么在没有export前,显示test为空,但通过()方式启动,却显示为定义的true。
为什么呢?
使用()方式启动的子shell和显式启动的有什么不同?
请高手指点。
那么一个shell变量,应该在子shell中无效吧?
$>test=true
$>echo $test
true
$>(echo $test;exit 0)
true
$>sh
>echo $test
>
如果显式的启动一个子shell,那么在没有export前,显示test为空,但通过()方式启动,却显示为定义的true。
为什么呢?
使用()方式启动的子shell和显式启动的有什么不同?
请高手指点。
|
(echo $test;exit 0)
shell在解释这个命令的时候,已经进行了变量扩展,$test被替换为true
subshell里面执行的其实是echo true;exit 0
shell在解释这个命令的时候,已经进行了变量扩展,$test被替换为true
subshell里面执行的其实是echo true;exit 0