bash – 理解词汇范围 – 维基百科是否正确?
发布时间:2020-12-15 17:00:16 所属栏目:安全 来源:网络整理
导读:我一直在努力克服词汇范围(我不太相信使用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
我一直在努力克服词汇范围(我不太相信使用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,因为函数g打印x的(动态)值然后设置x = 2的值. 我是否需要更正维基百科条目,或调整我的理解?
从bash手册页描述本地内置(强调我的)
调用g时,将从最近的封闭运行时上下文中使用x的值(未标记为local).当从f调用g时,这意味着由f定义的局部变量x,而不是全局变量x.这适用于x的查找和赋值.当从全局范围调用g时,x指的是全局变量x. 这与词法范围形成对比,其中函数g中的x将始终引用全局x,因为g在全局范围中定义.调用函数的地方不相关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |