shell编程之变量的作用域
Posted 永远不要矫情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之变量的作用域相关的知识,希望对你有一定的参考价值。
变量的作用域又叫命令空间,表示变量的上下文。相同的变量可以在多个命令空间中定义,并且彼此之间不干涉。在linux系统中,不同进程ID的shell默认为一个不同的命令空间。例如:
[root@node1 ~]# cat namespace01.sh
#!/bin/bash
VAR_01=100
echo VAR_01 in $0:$VAR_01
[root@node1 ~]# cat namespace02.sh
#!/bin/bash
VAR_01=100
echo VAR_01 in $0:$VAR_01
[root@node1 ~]# sh namespace01.sh
VAR_01 in namespace01.sh:100
[root@node1 ~]# sh namespace02.sh
VAR_01 in namespace02.sh:100
shell变量的作用域是在本shell中,属于全局变量。 函数对其也是可访问和修改的。例如:
[root@node1 ~]# cat namespace03.sh
#!/bin/bash
var_02=100
function char_var(){
var_02=200
}
echo "before function var_02:$var_02"
char_var
echo "after function var_02:$var_02"
[root@node1 ~]# sh namespace03.sh
before function var_02:100
after function var_02:200
由上述可知,函数可修改全局变量,但若有些变量的作用域只想在函数里,则声明时需加上local指定其为在函数内生效的‘局部变量’,这样只存在于局部的命令空间内,从而不对全局变量有影响,对namespace03.sh修改后如下所示:
[root@node1 ~]# cat namespace03.sh
#!/bin/bash
var_02=100
function char_var(){
local var_02=200
}
echo "before function var_02:$var_02"
char_var
echo "after function var_02:$var_02"
[root@node1 ~]# sh namespace03.sh
before function var_02:100
after function var_02:100
以上是关于shell编程之变量的作用域的主要内容,如果未能解决你的问题,请参考以下文章