一、目的
上一篇我们简单介绍了shell脚本的组成以及如何运行一个shell脚本,本篇将详解讲解shell中的变量。在Shell脚本中,变量是用来存储和处理数据的基本结构。
二、介绍
1、定义变量
变量名与等号(=)后跟值来定义一个变量,变量名称与值之间只有一个"="(绝对不能有空格)。
变量名与等号之间不能有空格,但赋值内容可以包含空格,如果值本身含有空格或特殊字符,应将整个变量引用用双引号包围起来。
上图中定义了三个变量,第一个变量使用单引号''包含其字符串值;第二个使用双引号""包含其字符串值;第三个变量其值也是字符串;第四个字符串是一个数值(但其还是字符串)。
当你给一个变量赋值时,无论赋值的内容是什么类型的数据(数字、文本或特殊字符),Shell都会将其作为字符串来处理。
2、引用变量
使用美元符号"$"引用变量的值;如果变量名包含特殊字符或者与后续字符无明显分隔时,可以使用花括号 {} 来包裹变量名以避免歧义。
上图中列举了打印变量my_var_three的几种方法,需要特别注意的是如果变量名和打印内容粘连在一起,此时必须添加花括号,否则会认为是一个新的变量名。
上图中的执行结果如下:
3、只读变量
通过指定readonly关键字可以定义只读变量。
对只读变量赋新值,执行时会报错。
上图中对只读变量赋新值直接显示报错。
4、 删除变量
使用 unset 命令可以删除已定义的变量。
unset之后再打印此变量则显示未空(即该变量未定义)
5、命令替换
即将命令的执行结果直接作为变量的值,有两种方式:
- 使用反引号
- 使用$(command)形式
6、环境变量
环境变量是一种特殊的Shell变量,它们不仅对当前Shell进程可见,还会被子进程继承。 shell脚本中可以引用环境变量的值,也可以将变量导出为环境变量。
使用环境变量
导出环境变量
export my_var_four="abc"
export my_var_four #在一个已经定义了值的变量基础上进行导出
7、局部变量和全局变量
Shell脚本中没有严格的局部变量概念,但在函数内部定义的变量通常只能在该函数内部访问。环境变量就是全局变量。
8、数组变量
Bash支持一维数组,可通过索引引用其元素。
以上,就是shell脚本的基本内容。