千家信息网

怎么理解中脚本变量和函数变量的作用域

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关怎么理解中脚本变量和函数变量的作用域,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在shell中定义函数可以使
千家信息网最后更新 2026年11月03日怎么理解中脚本变量和函数变量的作用域

本篇文章给大家分享的是有关怎么理解中脚本变量和函数变量的作用域,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在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=200
}
#call the function ltx_func
ltx_func
echo $v2

结果:
200
解析:函数变量v2默认是global的,其作用域从"函数被调用时执行变量定义的地方"开始,到shell结束为止。注意,不是从定义函数的地方开始,而是从调用函数的地方开始。打印命令在变量v2的作用域内,所以能够访问变量v2。

例3:函数定义的local变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
#define the local variable v2
local v2=200
}
#call the function ltx_func
ltx_func
echo $v2

结果:
(空)
解析:函数变量v2显示定义为local的,其作用域局限于函数内。打印命令在函数外,不在变量v2的作用域内,所以能够不能访问变量v2。

例4:函数参数是local变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
echo "param 1: $1"
}
#call the function ltx_func
ltx_func 100

结果:
100
解析:函数参数是local的,通过位置变量来访问。打印命令输出函数的第一个参数。

(3)如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。

例5:同名local变量屏蔽global变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
echo $v1
#define the local variable v1
local v1=200
echo $v1
}
#define the global variable v1
v1=200
#call the function ltx_func
ltx_func
echo $v1

结果:
100
200
100
解析:global变量v1的作用域从被定义的地方开始,到shell结束。调用函数ltx_func的地方在变量v1的作用域内,所以能够变量v1。函数又定义了同名的local变量v1,同名local变量屏蔽global变量,所以函数第二次打印访问的是local变量。退出函数后再次打印v1,此时函数定义的local变量已经消失,访问的是global变量。

以上就是怎么理解中脚本变量和函数变量的作用域,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

变量 函数 作用 地方 脚本 结果 参数 命令 代码 更多 知识 篇文章 问题 实用 费解 位置 再次 可以使 就是 工作会 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技学院 互联网为科技 互联网金融与金融科技 睿民互联网科技 沃里互联网科技 互联网科技公司有哪些 深圳卡尔迅互联网科技有限公司怎么样 卫星互联网科技股票 温州喔噻互联网科技有限公司 福州新华互联网科技学校 知乎 昭通云南众福互联网科技有限公司 互联网企业和科技型企业 栖莱科技互联网股份有限公司 乌鲁木齐新华智原互联网科技学校 中国互联网公司排名锤子科技 互联网科技公司营业执照怎么办理 上海钢联属于互联网科技股吗 陕西云淼互联网科技公司 互联网科技职业技能培训学校 河南商务圈互联网科技有限公司 科技类互联网 没上市的科技互联网公司 贷财互联网科技 南京欣网互联网科技 互联网之后的科技是什么 新华互联网科技2019 互联网科技公司实习生 35岁以上互联网科技行业 江苏互联网科技小贷 北京天晋互联网科技有限公司
0