读书人

Shell编程中的“局部变量”跟“导出变

发布时间: 2012-12-27 10:17:10 作者: rapoo

Shell编程中的“局部变量”和“导出变量”

如果你对子Shell的概念不甚了解,如果你对export的用法还没吃透,如果你不知道Shell如何管理你的变量,请阅读本文。否则,请复习本文。^_^

情景一:建立一个shell脚本var1.sh,其内容为:

?

[rocrocket@rocrocket SHELL]$ export myglobal=10[rocrocket@rocrocket SHELL]$ cat -n var4.sh     1#!/bin/bash     2myglobal=33     3echo myglobal=$myglobal[rocrocket@rocrocket SHELL]$ bash var4.shmyglobal=33[rocrocket@rocrocket SHELL]$ echo $myglobal10

可见,在子shell是无法改变父shell中的“导出变量列表”中变量的值的。子shell只能修改自己手里的那份“导出变量列表”中变量的值。

阶段总结:

子shell是无法改变父shell中的“导出变量列表”中变量的值的。
变量一旦被导出,对所有后续执行的子shell,该变量都是导出变量。

关于export -p:

可以执行export -p来查看当前shell的导出变量列表。这其中一定是包括了从父shell继承来的导出变量列表。

全文总结:

1 没有导出的变量是局部变量,子shell是看不到的。
2 导出变量列表被复制给子shell,子shell可以修改和存取它,但是这种修改父shell看不到。
3 导出变量列表的上述特性对于直接产生的子shell生效,对于由子shell产生的后继子shell也是如此。
4 export可以在变量赋值之后用,也可以在变量赋值之前用。

读书人网 >编程

热点推荐