動態範圍內的行動

動態範圍意味著變數查詢發生在呼叫函式的範圍內,而不是在定義函式的位置

$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3

在詞法範圍的語言中,func1 總是在全域性範圍內查詢 x 的值,因為 func1 是在本地範圍內定義的。

在動態範圍的語言中,func1 檢視呼叫它的範圍。當從 func2 中呼叫它時,它首先在 func2 的主體中查詢 x 的值。如果它沒有在那裡定義,它將在全域性範圍內,從那裡呼叫 func2