变量的作用域
Shell 变量的作用域,就是 Shell 变量的有效范围(可以使用的范围)。在不同的作用域中,同名的变量不会相互干涉。 有的变量可以在当前 Shell 会话中使用,这叫做全局变量(global variable); 有的变量只能在函数内部使用,这叫做局部变量(local variable);
1.全局变量
所谓全局变量,就是指变量在当前的整个 Shell 会话中都有效。每个 Shell 会话都有自己的作用域,彼此之间互不影响。在 Shell中定义的变量,默认就是全局变量,其作用域为从变量定义开始的地方,到shell结束或者被显式的删除。
需要强调的是,全局变量的作用范围是当前的Shell 会话,而不是当前的 Shell 脚本文件,它们是不同的概念。打开一个 Shell 窗口就创建了一个 Shell 会话,打开多个Shell 窗口就创建了多个 Shell 会话,每个 Shell 会话都是独立的进程,拥有不同的进程 ID。在一个 Shell会话中,可以执行多个 Shell 脚本文件,此时全局变量在这些脚本文件中都有效。
#!/bin/bash
function fun1() {
temp=$[ $value + 5 ]
result=$[ $temp * 2 ]
}
temp=4
value=6
fun1
echo "The result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi
添加执行权限,查看执行结果
[root@bogon ~]# vim variable10.sh
[root@bogon ~]# chmod +x variable10.sh
[root@bogon ~]# ./variable10.sh
The result is 22
temp is larger
2.局部变量
局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部。在shell中,可以使用 local 关键字在函数内部来定义局部变量,函数内部参数也是局部变量。
#!/bin/bash
function fun1() {
local temp=$[ $value + 5 ]
result=$[ $temp * 2 ]
}
temp=4
value=6
fun1
echo "The result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi
添加执行权限,查看执行结果
[root@bogon ~]# vim variable11.sh
[root@bogon ~]# chmod +x variable11.sh
[root@bogon ~]# ./variable11.sh
The result is 22
temp is smaller
本文介绍了Shell变量的作用域,包括全局变量和局部变量的概念。全局变量在当前Shell会话中有效,而局部变量则限制在函数内部。通过`local`关键字可在函数内定义局部变量,确保其作用范围的限制。
1万+

被折叠的 条评论
为什么被折叠?



