0%

作用域

作用域

在bash中,变量都是全局的。也就是说,在脚本中定义的变量,可以在任何地方调用,包括函数。

先定义,后调用。注意先后关系。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@vm-101 ~]# cat varible.sh
#!/bin/bash

# 注释说明,好习惯

var1="aaaa"

func1(){
var2="bbbb"
echo $var1

return 0
}

echo "1: $var2"
func1
echo "2: $var2"

exit 0



[root@vm-101 ~]# bash varible.sh
1:
aaaa
2: bbbb

思考:为什么1:后面是空?而2:后面是有值的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@vm-101 ~]# cat varible.sh
#!/bin/bash

# 注释说明,好习惯

var1="aaaa"

func1(){
local var2="bbbb" # 注意这里,多了一个local
echo $var1
return 0
}

echo "1: $var2"
func1
echo "2: $var2"

exit 0


[root@vm-101 ~]# bash varible.sh
1:
aaaa
2:

local的意思是把该变量设置成局部变量。在函数里面定义的,就只能在该函数内部访问和使用。