`declare -p VAR`が設定されていないローカル変数に対して「declare --VAR」を返しますが、設定されていないグローバル変数に対して「bash:宣言:A:見つかりません」エラーが発生するのはなぜですか?

`declare -p VAR`が設定されていないローカル変数に対して「declare --VAR」を返しますが、設定されていないグローバル変数に対して「bash:宣言:A:見つかりません」エラーが発生するのはなぜですか?

私は理解できません:

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

ベストアンサー1

おすすめ記事