子shell问题求救。

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
dengroj
帖子: 39
注册时间: 2009-06-06 8:57

子shell问题求救。

#1

帖子 dengroj » 2009-08-10 17:15

登录shell,定义了x=10 y=12

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

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

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

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



谢谢高手。。
上次由 dengroj 在 2009-08-10 19:37,总共编辑 1 次。
本人花580元从国嵌淘宝店上购买的正版,现在尝试创业,低价转让。qq:1531267696
头像
yingfei
帖子: 273
注册时间: 2007-09-03 18:34
来自: 羊城通

Re: 子shell问题求救。

#2

帖子 yingfei » 2009-08-10 17:25

变量经过 export 之后 在其子进程中才可以使用。
否则,会被当成变量未定义。 子进程中 对变量值的变更 不会影响到父脚本中字义的变更值。就算是export 过的也不会被影响,还是原值。
只有一种情况除外:
使用 . ./test 或 source ./test 这两种方式执行脚本时, 脚本中的操作对父脚本都有效。 包括切换目录, 改变变量的值等。
头像
yingfei
帖子: 273
注册时间: 2007-09-03 18:34
来自: 羊城通

Re: 子shell问题求救。

#3

帖子 yingfei » 2009-08-10 17:28

代码: 全选

yingfei@~$ cat a
x=5

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