bash函数范围和变量范围

问题描述 投票:-2回答:1

这是一组简化的bash命令,它们重现了我在脚本中遇到的问题:

X=9
true && f() { (( x++ )) ; echo hello } ; f

哪个回归

hello

然后

echo $X

返回

X=9

我期望得到X = 10的地方

你能解释为什么全局变量没有在函数内修改吗?

我知道全局变量不会在子shell中修改,但在本例中并非如此。观察到的行为(变量作用域)似乎与函数在“条件语句”中声明的事实有关:在&&之后。

bash
1个回答
5
投票

Capital global X和函数调用小写x。这是两个不同的变量。

© www.soinside.com 2019 - 2024. All rights reserved.