Shell(Bash)变量及定义规范

什么是变量呢?从字面上来看就是可以变的量。举个例子,我们小时候都做过数学的应用题,经常定义 x 的值是某个数,如果换了一道题,还是定义 x 的值,但是 x 的值就不和第一道题相同了,这个 x 就是变量。

变量是计算机内存的单元,其中存放的值可以改变。当 Shell 脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在一个变量中。

每个变量都有一个名字,所以很容易引用它。变量可以定制用户本身的工作环境。使用变量可以保存有用信息,使系统获知用户相关设置。变量也可以用于保存暂时信息。

那么,应该如何设置变量呢?其实非常简单,命令如下:

[root@localhost ~]# name=sc
#定义变量name的值
[root@localhost ~]# echo $name、
sc
#查询变量的值

在定义变量时,有一些规则需要遵守。

1) 变量名可以由字母、数字和下画线组成,但是不能以数字开头。如果变量名是"2name",则是错误的。

2) 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。比如:

[root@localhost ~]# aa=1+2
[root@localhost ~]# echo $aa
1+2

看到了吧,变量 aa 的值不是"3",而是"1+2"。在 Bash 中,变量类型是字符串型,所以认为"1+2"只是一个字符串,而不会进数值运算(数值运算方法会在后续章节中介绍)。

3) 变量用等号"="连接值,"="左右两侧不能有空格。这是 Shell 语言特有的格式要求。在绝大多数的其他语言中,"="左右两侧是可以加入空格的。但是在 Shell 中命令的执行格式是"命令 [选项] [参数]",如果在"="左右两侧加入空格,那么 Linux 会误以为这是系统命令,是会报错的。

4) 变量值中如果有空格,则需要使用单引号或双引号包含,如 test="hello world!"。双引号括起来的内容"$"和反引号者都拥有特殊含义,而单引号括起来的内容都是普通字符。

5) 在变量值中,可以使用转义符"\"。

6) 如果需要増加变量值,那么可以进行变量叠加。 例如:

[root@localhost ~]#test=123
[root@localhost ~]#test="$test"
456
[root@localhost ~]# echo $test
123456
#叠加变量test,变量值变成了123456
[root@localhost ~]#test=${test}789
[root@localhost ~]# echo $test
123456789
#再叠加变量test,变量值变成了123456789

变量叠加可以使用两种格式:"$变量名"或 ${变量名}。

7) 如果要把命令的执行结果作为变量值赋予变量,则需要使用反引号或 $() 包含命令。例如:

[root@localhost ~]# test=$(date)
[root@localhost ~]# echo Stest
2013年10月21日 星期一20:27:50 CST


8) 环境变量名建议大写,便于区分。