私は理解できません:
$ 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
そうでなければ、ここで別の結果を提供する意図はありますか?では、なぜそうなのでしょうか?