bash函数作用域和变量作用域

时间:2019-02-28 20:02:12

标签: bash

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

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

返回

hello

然后

echo $X

返回

X=9

我期望得到X = 10的地方

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

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

1 个答案:

答案 0 :(得分:5)

大写全局X,该函数调用小写字母x。那是两个不同的变量。