我正在通过一些在线教程来学习Shell脚本,然后来到了以下脚本,该脚本声明了全局变量和局部变量的差异。
#!/bin/bash
# Experimenting with variable scope
var_change () {
local var1='local 1'
echo Inside function: var1 is $var1 : var2 is $var2
var1='changed again'
var2='changed again'
}
var1='global 1'
var2='global 2'
echo Before function call: var1 is $var1 : var2 is $var2
var_change
echo After function call: var1 is $var1 : var2 is $var2
输出为:
在函数调用之前:var1为global 1:var2为global 2
内部函数:var1是本地1:var2是全局2
函数调用后:var1为全局1:再次更改var2
我的问题...
为什么var1
在函数调用后是“全局1”而不是“再次更改”?有人可以解释吗?
var1
在函数中声明为局部。因此,在函数执行过程中,有两个变量名为var1
:全局变量和局部变量;全局变量和局部变量。但是该功能只能“看到”本地的(本地的“阴影”全局的)。因此,在函数内部,您var1
对本地变量所做的任何事情都可以完成;全球var1
根本没有动静。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句