1
+ #! /bin/bash
2
+
3
+ # Variables: 赋值和替换
4
+
5
+ a=375
6
+ hello=$a
7
+
8
+ # -------------------------------------------------------------------------
9
+ # =号的左右两边都不能有空白符.
10
+ # 如果有一个空白符会怎么样?
11
+ #
12
+ # 如果用 "VARIABLE =value",
13
+ # ^
14
+ # + 脚本会以为"VARIABLE"是一个命令并且此命令带了一个参数"=value"。
15
+ #
16
+ # 如果用 "VARIABLE= value",
17
+ # ^
18
+ # + 脚本会以为"value"是一个命令,
19
+ # + 并且把环境变量"VARIABLE"赋为空值:""。
20
+ # -------------------------------------------------------------------------
21
+
22
+
23
+ echo hello # 没有引用变量,只是输出字符串 "hello".
24
+
25
+ echo $hello
26
+ echo ${hello} # 这句和上面的一句一样
27
+
28
+ echo " $hello "
29
+ echo " ${hello} "
30
+
31
+ echo
32
+
33
+ hello=" A B C D"
34
+ echo $hello # A B C D
35
+ echo " $hello " # A B C D
36
+ # 正如你所看到的:echo $hello和echo "$hello"产生不同的输出。
37
+ # ^ ^
38
+ # 把变量引起来会保留空白字符.
39
+
40
+ echo
41
+
42
+ echo ' $hello' # $hello
43
+ # ^ ^
44
+ # 在单引号中的变量引用会被禁止,
45
+ # + 字符"$"会仅仅被认为是一个普通的字符,而不是变量的前缀.
46
+
47
+ # 注意不同引用的不同效果.
48
+
49
+
50
+ hello= # Setting it to a null value.
51
+ echo " \$ hello (null value) = $hello "
52
+ # 注意具有null值的变量不等同于废弃(unset)此变量
53
+ # + 虽然最后的结果都是一样的(看下面的).
54
+
55
+ # --------------------------------------------------------------
56
+
57
+ # 在同一行里用空白字符隔开为多个变量赋值是可以的。
58
+ #
59
+ # 警告:这可能减少可读性,并且可能是不可移植的。
60
+
61
+ var1=21 var2=22 var3=$V3
62
+ echo
63
+ echo " var1=$var1 var2=$var2 var3=$var3 "
64
+
65
+ # 在老版本的sh中这可能会引起问题
66
+
67
+ # --------------------------------------------------------------
68
+
69
+ echo ; echo
70
+
71
+ numbers=" one two three"
72
+ # ^ ^
73
+ other_numbers=" 1 2 3"
74
+ # ^ ^
75
+ # 如果给变量赋的值中有空白字符,引号是必须的。
76
+ #
77
+ echo " numbers = $numbers "
78
+ echo " other_numbers = $other_numbers " # other_numbers = 1 2 3
79
+ echo
80
+
81
+ echo " uninitialized_variable = $uninitialized_variable "
82
+ # 未初始化的变量具有null值 (即是没有值).
83
+ uninitialized_variable= # 声明,但没有初始化它 --
84
+ # + 这就好像上面一样给它设置一个null 值
85
+ echo " uninitialized_variable = $uninitialized_variable "
86
+ # 它仍然是null值.
87
+
88
+ uninitialized_variable=23 # 赋值
89
+ unset uninitialized_variable # 销毁变量.
90
+ echo " uninitialized_variable = $uninitialized_variable "
91
+ # 结果仍然是null值.
92
+ echo
93
+
94
+ exit 0
0 commit comments