e.g。
outer() {
declare -a array
inner
}
inner() {
declare -p array
}
outer
但是,奇怪的是,它不起作用:
ryan@DevPC-LX ~/langtest/sh $ ./ar
./ar: line 9: declare: array: not found
ryan@DevPC-LX ~/langtest/sh $
如果我使用declare -ga
而非declare -a
将其明确声明为全局,则会得到相同的结果。但是,如果我首先将其设为本地:
outer() {
local array
declare -a array
inner
}
inner() {
declare -p array
}
outer
然后它起作用:
ryan@DevPC-LX ~/langtest/sh $ ./ar
declare -a array='()'
ryan@DevPC-LX ~/langtest/sh $
为什么全局变量不起作用,但是本地人呢?