目录
一、条件语句
1、测试 test和[ ]
测试文件的表达式是否成立。格式一:test +选项 + 对象 ;格式二 :[ 条件表达式 ] ,注意两边要加空格,用echo $?返回结果。
选项:-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试当前用户是否有权限执行
-L: 测试是否为软连接文件
2、比较整数数值
书写格式:[ 整数1 -操作符 整数2 ]
-eq:第一个数等于(Equal)第二个数
-ne:第一个数不等于(Not Equal)第二个数
-gt:第一个数大于(Greater Than)第二个数
-lt:第一个数小于(Lesser Than)第二个数
-le:第一个数小于或等于(Lesser or Equal)第二个数
-ge:第一个数大于或等于(Greater or Equal)第二个数
3、字符串比较
常用的测试操作符 :
= :字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在
书写格式:
[ 字符串1 = 字符串2 ] 比较两个字符串内容是否相同
[ 字符串1 != 字符串2 ] 比较两个字符串内容是否不相同
[ -z 字符串 ] 显示字符串是否为空
[ -n 字符串 ] 显示字符是否存在
4、逻辑测试(短路运算)
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
常见条件:
-a或 &&:短路且,表示“而且”。第一个是真,第二个也是真,全真才为真;第一个为假,整 个就为假,不用执行后面的操作。
-o或 ||:短路或,表示“或者”,一真即为真。第一个是假才会执行第二个;第一个为真,就 不会执行第二个。
实验一:
实验二:
5、双中括号 [[ expression ]]
用法:
①[[ 字符串 == 通配符 ]] :表示左侧字符串是否和右侧通配符所表达的内容相同,用echo $?查看;
②[[ 字符串 =~ 正则表达式 ]] :表示左侧字符串是否和右侧正则表达式所表达的内容相同,用echo $?查看;
6、( ) { } 批量执行
(CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行。
二、if语句
1、if语句的结构
①单分支结构:执行到“语句判断”开始判断,如果是则会执行语句,如果不是就直接结束。
if 判断条件
then 条件为真的分支代码
fi 结束
实验:
②双分支结构:执行到“语句判断”开始判断,如果是则会执行语句1,如果不是就执行语句2,然后再结束。
if 判断条件
then 条件为真的分支代码
else 条件为假的分支代码
fi 结束
实验一:
实验二:
③多分支结构
if 判断条件1
then 条件1为真的分支代码
elif 判断条件2
then 条件2为真的分支代码
elif 判断条件3
then 条件3为真的分支代码
........
else 以上条件都为假的分支代码(托底)
fi 结束
实验:
三、case
case结构:
case 变量值 in
条件判断1)
命令序列1
;;
条件判断2)
命令序2
;;
...........
* )
默认命令序列
esac
case支持glob风格的通配符:
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符
| 表示或者,如: a|b
实验: