ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 全局变量和局部变量,local 命令 Bash 函数体内直接声明的变量,属于全局变量,整个脚本都可以读取。这一点需要特别小心。 ~~~ # 脚本 test.sh fn () { foo=1 echo "fn: foo = $foo" } fn echo "global: foo = $foo" ~~~ 上面脚本的运行结果如下。 ~~~ $ bash test.sh fn: foo = 1 global: foo = 1 ~~~ 上面例子中,变量`$foo`是在函数`fn`内部声明的,函数体外也可以读取。 函数体内不仅可以声明全局变量,还可以修改全局变量。 ~~~ #! /bin/bash foo=1 fn () { foo=2 } fn echo $foo ~~~ 上面代码执行后,输出的变量`$foo`值为2。 函数里面可以用`local`命令声明局部变量。 ~~~ #! /bin/bash # 脚本 test.sh fn () { local foo foo=1 echo "fn: foo = $foo" } fn echo "global: foo = $foo" ~~~ 上面脚本的运行结果如下。 ~~~ $ bash test.sh fn: foo = 1 global: foo = ~~~ 上面例子中,`local`命令声明的`$foo`变量,只在函数体内有效,函数体外没有定义