MST
星途 面试题库

面试题:Bash脚本中的变量作用域相关问题

在Bash脚本中,解释局部变量和全局变量的区别,并举例说明如何在函数内部创建一个局部变量且不影响脚本其他部分的同名变量。
13.3万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

局部变量和全局变量的区别

  1. 作用域
    • 全局变量:在整个Bash脚本中都可见,从定义的位置开始,到脚本结束或被显式删除之前,任何地方都能访问和修改。
    • 局部变量:仅在定义它的代码块(通常是函数内部)内可见,在该代码块外部无法访问和修改。
  2. 生命周期
    • 全局变量:脚本开始执行时创建,脚本结束时销毁。
    • 局部变量:进入其定义所在的代码块(如函数)时创建,离开该代码块时销毁。

举例在函数内部创建局部变量且不影响脚本其他部分的同名变量

#!/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,说明函数内部的局部变量没有影响到脚本其他部分的同名全局变量。