假设我有两个功能,foo
并且bar
:
foo() {
FOO=foo
}
我可以做这个:
bar() {
echo $FOO
}
$ bar
$ foo
但我也可以这样做:
bar() {
echo $1
}
$ bar $FOO
$ foo
和
foo() {
local foo=foo
return $foo
}
bar() {
echo $1
}
$ bar foo
$ foo
如何确定变量的范围,当它可以用于不同的函数、相同的脚本或/和跨不同的脚本时是全局的?
关于如何在 bash 中使用变量管理函数,是否有正确的方法或约定?
环境变量
这些变量将对该环境中执行的所有脚本可见
您可以通过执行
env
命令来查看它们。这些是通过使用
export
内置设置或declare -x
全局变量
全局变量将对单个程序(脚本)中的所有内容可见,包括由子shell/函数创建的子进程,但跨程序(脚本)不可见。
任何未明确导出或声明为本地的变量都是全局变量。
局部变量
这些变量仅对声明它们的函数和任何子函数可见。
这些变量必须通过使用
local
内置函数或简单地declare
在函数内使用来明确声明为本地变量。