全局和局部变量分配

杰夫·庞(Jeff Pang)

我正在通过一些在线教程来学习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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章