与程序设计语言中的变量一样,shell变量有其规定的作用范围。shell变量分为局部变量和全局变量。
局部变量的作用范围仅限制在其命令行所在的shell或shell脚本文件中。
全局变量的作用范围则包括本shell进程及其所有子进程。
可以使用export内置命令将局部变量设置为全局变量。
下面给出一个shell变量作用域的例子。
//在当前shell中定义变量var1
[root@Server01 ~]# var1=Linux
//在当前shell中定义变量var2并将其输出
[root@Server01 ~]# var2=unix
[root@Server01 ~]# export var2
//引用变量的值
[root@Server01 ~]# echo $var1
Linux
[root@Server01 ~]# echo $var2
unix
//显示当前shell的PID
[root@Server01 ~]# echo $$ 2670 [root@Server01 ~]# //调用子shell [root@Server01 ~]# bash //显示当前shell的PID [root@Server01 ~]# echo $$
2709
//由于var1没有被输出,所以在子shell中已无值
[root@Server01 ~]# echo $var1
//由于var2被输出,所以在子shell中仍有值
[root@Server01 ~]# echo $var2
unix
//返回主shell,并显示变量的值
[root@Server01 ~]# exit
[root@Server01 ~]# echo $$
2670
[root@Server01 ~]# echo $var1
Linux
[root@Server01 ~]# echo $var2
unix