当前位置: 技术问答>linux和unix
关于shell变量传递问题?
来源: 互联网 发布时间:2015-08-08
本文导语: 一个shell脚本运行时 他是在一个子shell中运行吗? 比如 $x=hello $echo 'echo $x' >echox $chmod +x echox $./echox hello $ 如果在子shell中运行 在《unix编程环境》中说变量的值不会传给子shell的 如果 $sh $echo $x $ 会什么也不显示 ...
一个shell脚本运行时
他是在一个子shell中运行吗?
比如
$x=hello
$echo 'echo $x' >echox
$chmod +x echox
$./echox
hello
$
如果在子shell中运行
在《unix编程环境》中说变量的值不会传给子shell的
如果
$sh
$echo $x
$
会什么也不显示
说明变量的值不会传给子shell的
那shell脚本是在一个子shell中运行吗?
他是在一个子shell中运行吗?
比如
$x=hello
$echo 'echo $x' >echox
$chmod +x echox
$./echox
hello
$
如果在子shell中运行
在《unix编程环境》中说变量的值不会传给子shell的
如果
$sh
$echo $x
$
会什么也不显示
说明变量的值不会传给子shell的
那shell脚本是在一个子shell中运行吗?
|
临时变量是不可能传递给子Shell的
可以使用
export x
就可以了
可以使用
export x
就可以了
|
不是的,像你刚才
$sh
$echo $x
$
会什么也不显示
是因为另开了一个sh,所以它的临时变量是不可能传递给子Shell的,只在当前Shell有效.如果你想在子Shell中显示的话,建议先把你要在子Shell里面的变量转换为环境变量,这样就可以用了
$sh
$echo $x
$
会什么也不显示
是因为另开了一个sh,所以它的临时变量是不可能传递给子Shell的,只在当前Shell有效.如果你想在子Shell中显示的话,建议先把你要在子Shell里面的变量转换为环境变量,这样就可以用了
|
就是,应该用global的或者用export x都可以