shell编程之变量的作用域

本文介绍了Linux shell脚本中变量的作用域概念,包括全局变量和局部变量。通过示例展示了如何在函数内部修改全局变量以及如何使用`local`关键字创建仅在函数内部有效的局部变量,强调了局部变量不会影响全局变量的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的作用域又叫命令空间,表示变量的上下文。相同的变量可以在多个命令空间中定义,并且彼此之间不干涉。在linux系统中,不同进程ID的shell默认为一个不同的命令空间。例如:

[root@node1 ~]# cat namespace01.sh
#!/bin/bash 
VAR_01=100
echo VAR_01 in $0:$VAR_01
[root@node1 ~]# cat namespace02.sh
#!/bin/bash
VAR_01=100
echo VAR_01 in $0:$VAR_01
[root@node1 ~]# sh namespace01.sh 
VAR_01 in namespace01.sh:100
[root@node1 ~]# sh namespace02.sh 
VAR_01 in namespace02.sh:100

shell变量的作用域是在本shell中,属于全局变量。 函数对其也是可访问和修改的。例如:

[root@node1 ~]# cat namespace03.sh 
#!/bin/bash
var_02=100
function char_var(){
var_02=200
}
echo "before function var_02:$var_02"
char_var
echo "after function var_02:$var_02"
[root@node1 ~]# sh namespace03.sh 
before function var_02:100
after function var_02:200

由上述可知,函数可修改全局变量,但若有些变量的作用域只想在函数里,则声明时需加上local指定其为在函数内生效的‘局部变量’,这样只存在于局部的命令空间内,从而不对全局变量有影响,对namespace03.sh修改后如下所示:

[root@node1 ~]# cat namespace03.sh 
#!/bin/bash
var_02=100
function char_var(){
local var_02=200
}
echo "before function var_02:$var_02"
char_var
echo "after function var_02:$var_02"
[root@node1 ~]# sh namespace03.sh 
before function var_02:100
after function var_02:100
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值