什么是变量呢?从字面上来看就是可以变的量。举个例子,我们小时候都做过数学的应用题,经常定义 x 的值是某个数,如果换了一道题,还是定义 x 的值,但是 x 的值就不和第一道题相同了,这个 x 就是变量。
变量是计算机内存的单元,其中存放的值可以改变。当 Shell 脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在一个变量中。
每个变量都有一个名字,所以很容易引用它。变量可以定制用户本身的工作环境。使用变量可以保存有用信息,使系统获知用户相关设置。变量也可以用于保存暂时信息。
那么,应该如何设置变量呢?其实非常简单,命令如下:
在定义变量时,有一些规则需要遵守。
1) 变量名可以由字母、数字和下画线组成,但是不能以数字开头。如果变量名是"2name",则是错误的。
2) 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。比如:
看到了吧,变量 aa 的值不是"3",而是"1+2"。在 Bash 中,变量类型是字符串型,所以认为"1+2"只是一个字符串,而不会进数值运算(数值运算方法会在后续章节中介绍)。
3) 变量用等号"="连接值,"="左右两侧不能有空格。这是 Shell 语言特有的格式要求。在绝大多数的其他语言中,"="左右两侧是可以加入空格的。但是在 Shell 中命令的执行格式是"命令 [选项] [参数]",如果在"="左右两侧加入空格,那么 Linux 会误以为这是系统命令,是会报错的。
4) 变量值中如果有空格,则需要使用单引号或双引号包含,如 test="hello world!"。双引号括起来的内容"$"和反引号者都拥有特殊含义,而单引号括起来的内容都是普通字符。
5) 在变量值中,可以使用转义符"\"。
6) 如果需要増加变量值,那么可以进行变量叠加。 例如:
变量叠加可以使用两种格式:"$变量名"或 ${变量名}。
7) 如果要把命令的执行结果作为变量值赋予变量,则需要使用反引号或 $() 包含命令。例如:
8) 环境变量名建议大写,便于区分。