面试题答案
一键面试局部变量和全局变量的区别
- 作用域
- 全局变量:在整个Bash脚本中都可见,从定义的位置开始,到脚本结束或被显式删除之前,任何地方都能访问和修改。
- 局部变量:仅在定义它的代码块(通常是函数内部)内可见,在该代码块外部无法访问和修改。
- 生命周期
- 全局变量:脚本开始执行时创建,脚本结束时销毁。
- 局部变量:进入其定义所在的代码块(如函数)时创建,离开该代码块时销毁。
举例在函数内部创建局部变量且不影响脚本其他部分的同名变量
#!/bin/bash
# 定义全局变量
var=10
# 定义函数
function my_function {
# 定义局部变量,与全局变量同名
local var=20
echo "函数内部局部变量 var: $var"
}
echo "调用函数前全局变量 var: $var"
my_function
echo "调用函数后全局变量 var: $var"
在上述脚本中:
- 首先定义了一个全局变量
var
并赋值为10
。 - 在函数
my_function
内部,使用local
关键字定义了一个同名的局部变量var
并赋值为20
。函数内部访问的是局部变量var
,所以输出函数内部局部变量 var: 20
。 - 函数调用前后,全局变量
var
的值始终为10
,说明函数内部的局部变量没有影响到脚本其他部分的同名全局变量。