在shell编程过程中,不同于其他编程语言,在一些高级编程语JAVA或Python过程中,在定义一个变量的时候,如果这个变量是在函数中声明的变量,那么在函数外面是不能直接使用这个变量的,也就是说在高级语言中变量是有作用域的。

1、全局变量:

        不做特殊声明,Shell中变量都是全局变量

        Tips:大型脚本程序中函数慎用全局变量

2、局部变量:

        定义变量时,使用local关键字

        函数内和外若存在同名变量,则函数内部变量覆盖外部变量

        Tips:在写shell脚本的过程中尽量使用局部变量,如果没有定义局部变量,只要在整个脚本中对变量的名称进行一个很好的管理也是没有问的。

3、代码示例

        (一) 全部变量实例

#!/bin/bash

var1="hello world"

function test
{
	var2=87
}

echo $var1
# 由于没有调用test函数,var2变量没有生效
echo $var2
echo "----调用函数----"
test
echo $var1
echo $var2

# test1使用test定义的变量
function test1
{
	echo $var2
}
test1

# 运行脚本,第一次var2值为空,第二次var2值输出正确
~ % sh 31.local_global_var.sh
hello world

----调用函数----
hello world
87
87

        (二)局部变量实例

#!/bin/bash

var1="hello world"

function test
{
	# 函数内部通过local定义局部变量
	local var2=87
}

test
echo $var1
echo $var2

# 运行脚本,var2输出为空,因为var2变成局部变量只能在test函数中使用
~ % sh 31.local_global_var.sh
hello world
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐