Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么declare-p不起作用,除非名称是local?_Bash_Global Variables_Local Variables_Declare - Fatal编程技术网

Bash 为什么declare-p不起作用,除非名称是local?

Bash 为什么declare-p不起作用,除非名称是local?,bash,global-variables,local-variables,declare,Bash,Global Variables,Local Variables,Declare,e、 g 但奇怪的是,它不起作用: outer() { declare -a array inner } inner() { declare -p array } outer 如果我使用declare-ga而不是declare-a将其显式声明为全局,则会得到相同的结果。但是,如果我首先将其本地化: ryan@DevPC-LX ~/langtest/sh $ ./ar ./ar: line 9: declare: array: not found ryan@DevPC

e、 g

但奇怪的是,它不起作用:

outer() {
    declare -a array
    inner
}

inner() {
    declare -p array
}

outer
如果我使用
declare-ga
而不是
declare-a
将其显式声明为全局,则会得到相同的结果。但是,如果我首先将其本地化:

ryan@DevPC-LX ~/langtest/sh $ ./ar
./ar: line 9: declare: array: not found
ryan@DevPC-LX ~/langtest/sh $ 
然后它就起作用了:

outer() {
    local array
    declare -a array
    inner
}

inner() {
    declare -p array
}

outer

为什么全球人不工作,而本地人工作?

我无法在bash 4.4.11(1)或3.2.57(1)中重现这一点。您使用的是哪个版本?@thatotherguy
4.3.11(1)
ryan@DevPC-LX ~/langtest/sh $ ./ar
declare -a array='()'
ryan@DevPC-LX ~/langtest/sh $