除非名称是本地的,为什么声明-p不起作用?

时间:2017-04-04 21:46:54

标签: bash global-variables local-variables declare

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 $ 

为什么全局变量不起作用,但是本地人呢?

0 个答案:

没有答案