shell脚本之变量的作用域
可把变量提升为全局环境变量,可供其他Shell程序使用
场景1:
a.定义一个变量C,可以打印出来
[root@mylinux2 shell]# C=30
[root@mylinux2 shell]# echo $C
30
b.在脚本文件中打印这个变量C
执行脚本,发现不能拿到C的值
记住 : 用户登录之后开启一个解释器bash(一号);当启动一个脚本文件:重新启动一个bash(二号)去执行脚本,二号bash是一号子bash
[root@mylinux2 shell]# C=30
[root@mylinux2 shell]# echo $C
30
而上面的代码是在一号bash下运行的
执行脚本bash test3.sh是在二号bash下运行的
场景2
明确告知:环境变量TEST_B是在用户环境中定义的
一号bash下可以获得TEST_B的值
[root@mylinux2 shell]# echo $TEST_B
666
把TEST_B写入到脚本中,执行脚本也可以获得TEST_B的值(二号bash也可以获得TEST_B的值)
[root@mylinux2 shell]# bash test3.sh
10
hello zl
666
总而言之:在我用户下定义的环境变量,不管是子bash还是父bash,当前用户都可以拿到
另一个用户想拿环境变量TEST_B?拿不到
场景3
案例:
a、在第二个窗口中定义一个环境变量
[root@mylinux2 ~]# export TEST_F=40
[root@mylinux2 ~]# echo $TEST_F
40
b、在第一个窗口中拿TEST_F,拿不到
[root@mylinux2 shell]# echo $TEST_F
c、在第一个窗口中的test3.sh中写入变量
echo $TEST_F
运行脚本,也拿不到值
d、但是在第二个窗口中能拿到值
所以:在第二个服务器中的定义的环境变量TEST_F,在第一个服务器中拿不到;
原因:临时的用户环境变量只作用到当前bash及它的子bash。
注意:两个mylinux2服务器中的bash是两个不同的bash,是同级的bash,