分页: 1 / 1

子shell问题求救。

发表于 : 2009-08-10 17:15
dengroj
登录shell,定义了x=10 y=12

而一个脚步test
cat test
echo $x
echo $y

这时候运行./test,结果就是两行空白。

但,如果,在运行之后,export x,再运行./test,结果就可以显示10跟一行空行。

就是想问父shell的x、y跟子shell的x、y的关系是什么阿。



谢谢高手。。

Re: 子shell问题求救。

发表于 : 2009-08-10 17:25
yingfei
变量经过 export 之后 在其子进程中才可以使用。
否则,会被当成变量未定义。 子进程中 对变量值的变更 不会影响到父脚本中字义的变更值。就算是export 过的也不会被影响,还是原值。
只有一种情况除外:
使用 . ./test 或 source ./test 这两种方式执行脚本时, 脚本中的操作对父脚本都有效。 包括切换目录, 改变变量的值等。

Re: 子shell问题求救。

发表于 : 2009-08-10 17:28
yingfei

代码: 全选

yingfei@~$ cat a
x=5

yingfei@~$ x=10
yingfei@~$ ./a
yingfei@~$ echo $x
10
yingfei@~$ . ./a
yingfei@~$ echo $x
5
yingfei@~$