【发布时间】:2018-01-09 10:10:54
【问题描述】:
我一直在尝试理解词法作用域(我对 lexical 这个词的使用远非信服,但这是另一个讨论),我查看了 Wikipedia's entry。
根据相当简单的 Bash 脚本示例
$ x=1
$ function g () { echo $x ; x=2 ; }
$ function f () { local x=3 ; g ; }
$ f # does this print 1, or 3?
3
$ echo $x # does this print 1, or 2?
1
Bash 脚本的输出是 3, 1。但是,在我看来,它应该是 3, 2,因为函数 g 打印 x 的(动态)值,然后设置 x = 2 的值。
我需要更正维基百科条目,还是调整我的理解?
【问题讨论】:
-
它将f中的本地var设置为2,当f结束时,var被binned。把
echo $x放在g;之后 -
谢谢。这对我来说很清楚。
标签: bash scope lexical-scope