面试题答案
一键面试局部变量和全局变量的区别
- 作用域
- 全局变量:在整个脚本中都可以访问。一旦定义,脚本的任何部分,包括函数内部,都能对其进行读取和修改(除非在函数内使用
local
关键字重新定义同名变量,这种情况下会屏蔽全局变量的访问)。 - 局部变量:只在定义它的代码块(通常是函数)内部有效。函数结束后,局部变量就不存在了,不能在函数外部访问。
- 全局变量:在整个脚本中都可以访问。一旦定义,脚本的任何部分,包括函数内部,都能对其进行读取和修改(除非在函数内使用
- 生命周期
- 全局变量:从脚本开始执行时创建,直到脚本执行结束才销毁。
- 局部变量:在函数调用时创建,函数执行完毕后自动销毁。
示例
- 在函数内部定义局部变量
#!/bin/bash
function my_function {
local local_variable="This is a local variable"
echo $local_variable
}
my_function
# 尝试在函数外部访问局部变量,会输出空行
echo $local_variable
在上述脚本中,local_variable
是 my_function
函数内的局部变量,只能在函数内部访问。在函数外部尝试访问 $local_variable
会输出空行,因为该变量在函数外部不存在。
- 访问全局变量
#!/bin/bash
global_variable="This is a global variable"
function access_global {
echo $global_variable
}
access_global
在这个脚本中,global_variable
是全局变量,在函数 access_global
内部可以直接访问并输出其值。如果在函数内没有使用 local
关键字定义同名变量,函数会自动访问全局变量。如果想在函数内修改全局变量的值,可以直接操作,例如:
#!/bin/bash
global_variable="Initial value"
function modify_global {
global_variable="Modified value"
}
modify_global
echo $global_variable
这里在 modify_global
函数内修改了全局变量 global_variable
的值,函数调用后,在脚本后续部分输出的 global_variable
就是修改后的值。