Shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应的变化。

【变量的作用】

为灵活管理Linux系统提供特定参数,而有两层意思:

    1.变量名:使用固定的名称,由系统预设或用户自定义

    2.变量值:能够根据用户设置,系统环境的变化而变化

【变量的类型】

    1.自定义变量:由用户自己定义,修改和使用

    2.环境变量:由系统维护,用于设置工作环境

    3.位置变量:通过命令行给脚本程序传递参数

    4.预定义变量:Bash中内置一类变量,不能直接修改

【自定义变量】

        格式:变量名=变量值

        变量名以字母或下划线开头,区分大小写,建议全大写

(一)定义新的变量

wKiom1gRojWA8WNRAAAoSXlz1_8235.png

(二)查看和引用变量的值

        格式:echo $变量值

使用Shell变量_第1张图片

    当变量名称容易紧跟其后的其他字符相混淆时,需要添加大括号{ }将其括起来,否则将无法确定正确的变量名称。

使用Shell变量_第2张图片

(三)变量赋值的特殊操作

1. 双引号("):允许通过$符号引用其他变量值,例如:

使用Shell变量_第3张图片

2. 单引号('):禁止引用其他变量值,$视为普通字符,例如:

使用Shell变量_第4张图片

3. 反撇号(`)命令替换,提取命令执行后的输出结果,例如:

wKioL1gRrFCTP8yMAAAp1lt4bmE099.png

$()的作用:可以代替反撇号,解决嵌套问题,因为反撇号不能实现嵌套,例如:查询提供useradd命令程序的软件包所安装的配置文件位置

wKiom1gRrQ-R1GcZAAArhI4p06Q253.png

4. read命令:用来提示用户输入信息

使用Shell变量_第5张图片

(四)设置变量的作用范围

    新定义的变量只在当前shell有效,如果想进入新的shell环境同样有效,就需要使用export命令将变量导出为“全局变量”

使用Shell变量_第6张图片

可以同时指定多个变量名称作为参数(不需要用$符号),变量名之间以空格分割

使用Shell变量_第7张图片

使用export导出全局变量的同时,也可以为变量进行赋值,例如:

使用Shell变量_第8张图片

(五)数值变量的运算

格式:expr  变量1   运算符  变量2  [运算符 变量3] ...

    +:加法运算

    -:减法运算

    \*:乘法运算,注意不能只使用“*”符号,否则将被当成文件通配符

    /:除法运算

    %:求模运算,又称为取余运算,用来计算数值相除后的余数

使用Shell变量_第9张图片

若要将运算结果赋值给其他变量,可以结合命令替换操作(使用反撇号)

使用Shell变量_第10张图片

【特殊的Shell变量】

1. 环境变量

    环境变量指的是出于运行需要而由Linux系统提前创建的一类变量,主要用于设置用户的工作环境,包括用户宿主目录,命令查找路径,用户当前目录,登录终端等。

使用Shell变量_第11张图片

PHTH变量用于设置可执行程序的默认搜索路径,例如:

使用Shell变量_第12张图片

2. 位置变量

    位置变量也成为位置参数,使用$1,$2,$3,...,$9表示。例如:

编写一个adder2num.sh的小脚本,用来运算两个整数的和

使用Shell变量_第13张图片

需要计算的两个整数在执行脚本时以位置变量的形式提供

使用Shell变量_第14张图片

3. 预定义变量

    预定义变量,系统安装好之后就有,不能创建,只能使用,例如:$#表示命令行中位置参数的个数,$*表示所有位置参数的内容,$?表示前一条命令执行后的返回状态,返回0表示正确。$0表示当前执行的脚本或程序的名称。

使用Shell变量_第15张图片