一、系统预定义变量
1.常用系统变量 、HOME、HOME、PWD、、SHELL、SHELL、USER 等
2.案例实操
1)查看系统变量的值
2) 显示当前 Shell 中所有变量:set
二、自定义变量
1.基本语法
(1)定义变量:变量名=变量值,注意,=号前后不能有空格
(2)撤销变量:unset 变量名
(3)声明静态变量:readonly 变量,注意:不能 unse
2.变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建 议大写。
(2)等号两侧不能有空格
(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。
3.案例实操
(1)定义变量A
(2)给变量 A 重新赋值
(3)撤销变量 A
(4)声明静态(只读)的变量 B=2,不能 unset
(5)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
(6)变量的值如果有空格,需要使用双引号或单引号括起来
(7)可把变量提升为全局环境变量,可供其他 Shell 程序使用
helloworld.sh 文件中增加 echo $new_var
发现并没有打印输出变量 hello Linux 的值
解决方法
1) . 文件
2)export 添加目录
三、特殊变量
1.$n
(1)基本语法
(功能描述:为数字,n(功能描述:n为数字,n (功能描述:n 为数字,0 代表该脚本名称,1−1-9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
(2)案例实操
a.配置parameter.sh文件
b.将parameter.sh文件里的x权限打开
c.最终效果
2.$#
(1)基本语法 $#
功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及 加强脚本的健壮性。
(2)案例实操
a.配置parameter.sh文件
b.最终效果
3.、∗、*、@
(1)基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
(2) 案例实操
a.配置parameter.sh文件
b.最终结果
4.$?
(1)基本语法 $?
功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。
(2)案例实操
判断 helloworld.sh 脚本是否正确
四、运算符
(1)基本语法
“运算式或((运算式))”或“((运算式))” 或 “[运算式]”
(2)案例实操:
计算(5+1)* 3 的值
五、条件判断
1.基本语法
(1)test condition
(2)[ condition ](注意 condition 前后要有空格)
注意:条件非空即为 true,[ atguigu ]返回 true,[ ] 返回 false。
2.常用判断条件
(1)两个整数之间比较
-eq 等于(equal) -ne 不等于(not equal)
-lt 小于(less than) -le 小于等于(less equal)
-gt 大于(greater than) -ge 大于等于(greate)
注:如果是字符串之间的比较 ,用等号“=”判断相等;用“!=”判断不等。
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute)
(3)按照文件类型进行判断
-e 文件存在(existence)
-f 文件存在并且是一个常规的文件(file)
-d 文件存在并且是一个目录(directory)
3.案例实操
(1) 判断a是否等于hello
(2)23 是否大于20
(3)hello.sh 是否具有写权
(3)/home/atguigu/cls.txt 目录中的文件是否存在
(4)多条件判断
(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一 条命令执行失败后,才执行下一条命令)