当前位置: 技术问答>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
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。