Bash 为什么declare-p不起作用,除非名称是local?
e、 g 但奇怪的是,它不起作用: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
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 $