函数外定义的变量其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
函数内定义的变量其作用域是从被调用的地方开始,到shell结束或被显示删除的地方为止
一个很简答的例子说明问题:
#!/bin/bash
func_(){
var1='123'
}
func_
echo $var1
输出结果
123
因此,在调用了函数之后,函数内定义的变量在离开该函数后依然存在。
这个问题非常容易导致程序出现bug,要多注意哦。
Shell脚本中函数内外变量作用域解析
本文解释了函数内和函数外定义的变量在bashshell中的作用域差异,指出函数内定义的变量在函数结束后仍可能影响后续代码,可能导致意外的bug。
函数外定义的变量其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
函数内定义的变量其作用域是从被调用的地方开始,到shell结束或被显示删除的地方为止
一个很简答的例子说明问题:
#!/bin/bash
func_(){
var1='123'
}
func_
echo $var1
输出结果
123
因此,在调用了函数之后,函数内定义的变量在离开该函数后依然存在。
这个问题非常容易导致程序出现bug,要多注意哦。
3250
620
376

被折叠的 条评论
为什么被折叠?