变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。每一个变量的值都是以字符串的形式存储。
1、变量名的定义
变量名定义需要注意以下几点:
变量名由数字、字母、下划线组成;
必须以字母或者下划线开头;
不能使用Shell里的关键字(如,$,#,?等,通过help命令可以查看保留关键字)。
2、变量的赋值
赋值“=”左右不能有空格。
变量值可以加单引号、双引号、或者不加引号, 如果变量值包含了空格、或tab等空白符号,那么就必须使用引号包围起来。其中加单引号的变量值,输出时,直接将变量值当做一串字符串输出,不关心变量值中是否存在变量和命令。而加双引号的变量值,输出时会先解析里面的变量和命令,按照解析后的结果进行输出。
变量值可以是一个命令执行的结果,使用反引号和$()的方式,可以将命令执行结果赋值给变量。
3、变量的使用
使用一个定义过的变量,只要在变量名前面加美元符号$即可,变量名可以使用{ }包围起来,也可不使用{ }。
举例说明(为了方便,我们直接在shell环境终端进行举例演示变量的使用,不再写入脚本,其与在脚本中使用方法一致)。
1)变量值无空格
var=value
使用echo输出变量var,echo $var或者echo ${var},如图:
也可以加上单引号或者双引号:
var='value'或var="value":
2)变量值有空格
var='value 0'或var="value 0":
3)将命令执行结果赋值给变量
首先建立一个test.txt文件,输入内容为“my test!!”:
使用反引号方式包括命令“cat test.txt”,将test.txt中内容赋予变量var:
使用$()方式赋值给var:
4)变量中引用变量或者命令的情况
var0=123;
使用单引号定义var1的值:var1='var0 =${var0}';
使用双引号定义var1的值:var2="var0 =${var0}";
看执行结果:
可以看出var1的值直接当做字符串输出,而var2的值,经过解析变量中的变量var0之后进行才输出。
4、变量的修改
变量的修改就比较简单了,直接给定义后的变量二次赋值就可以了。
5、变量的删除
删除一个定义过得变量,使用unset命令。
6、将变量设置为只读变量
也可以将变量设置为只读模式,不允许修改,使用readonly命令。设置为只读变量后,不能用unset删除变量。如果还是用该变量,需要重启新的终端操作。
可以看到使用readonly命令之后,在此修改var变量,没有修改成功。