Shell中脚本变量和函数变量的作用域

本文详细介绍了在Shell中,脚本变量和函数变量的作用域规则。脚本变量具有全局作用域,而函数内的变量默认也是全局的,但可以通过`local`关键字声明为局部变量。函数参数具有局部作用域。同名局部变量会屏蔽全局变量。通过示例代码展示了各种情况下的变量访问和修改行为。
摘要由CSDN通过智能技术生成

      在shell中定义函数可以使代码模块化,便于复用代码。不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题。

(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。

例1:脚本变量的作用域
#!/bin/bash
#define the function ltx_func
ltx_func()
{
   echo $v1
   #modify the variable v1
   v1=200
}
#define the variable v1
v1=100
#call the function ltx_func
ltx_func
echo $v1

结果:
100
200
解析:脚本变量v1的作用域从被定义的地方开始,到shell结束。调用函数ltx_func的地方在变量v1的作用域内,所以能够访问并修改变量v1。

(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。

例2:函数定义的global变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
   #define the variable v2
   v2=2

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值