84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
ringa_lee
bash中变量默认是全局变量,无论这个变量是在什么位置(在函数中也一样),如果要使用局部变量,需要使用 local例如:
a="i'm global" function test(){ local a a="hello i'm local var" echo $a } test echo $a
bash中变量默认是全局的这是没错的,对于括号的理解可能有偏差,bash中小括号不同于其他编程语言的作用域的概念,而是,括号中的命令会在一个新的子shell中运行,注意是子shell,子shell是能够访问父shell全局变量的,但是括号内的变量就不能被括号外后面的脚本访问了。 核心要点是,bash小括号中的命令不完全等同于作用域;默认变量是全局的。
bash中变量默认是全局变量,无论这个变量是在什么位置(在函数中也一样),如果要使用局部变量,需要使用 local例如:
bash中变量默认是全局的这是没错的,对于括号的理解可能有偏差,bash中小括号不同于其他编程语言的作用域的概念,而是,括号中的命令会在一个新的子shell中运行,注意是子shell,子shell是能够访问父shell全局变量的,但是括号内的变量就不能被括号外后面的脚本访问了。 核心要点是,bash小括号中的命令不完全等同于作用域;默认变量是全局的。