我不明白:
$ declare -i VAR=0; \
> echo "$A"; \
> fun() { local -i VAR=1; echo {; echo "$VAR"; declare -p VAR; unset VAR; echo "$VAR"; declare -p VAR; echo }; };\
> fun; \
> echo "$VAR"; \
> declare -p VAR; \
> unset VAR; \
> echo "$VAR"; \
> declare -p VAR;
0
{
1
declare -i VAR="1"
declare -- VAR # <-- no error message
}
O
declare -i VAR="0"
bash: declare: VAR: not found # <-- error message
为什么调用会declare -p VAR
给出不同的结果?我的意思是,我知道在一种情况下VAR
是全局变量,而在另一种情况下它是局部变量。但是,通过对背后的某些“机制”有更深入的了解,结果是否可以预见呢?
如果不是,是否是故意在declare -p
这里给出不同的结果?如果是这样,为什么?