1. 测试
条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成。
测试过程,实现评估布尔声明,以便用在条件性环境下进行执行
- 若真,则状态码变量 $? 返回0
- 若假,则状态码变量 $? 返回1
test
格式1:test [操作符选项] 条件表达式
格式2:[ 操作符 条件表达式 ]
-d:测试是否为目录
-e:测试目录或文件是否存在
-a:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试当前用户是否有权限执行
-L: 测试是否为软连接文件
2. 整数数值比较
格式:
[ 整数1 操作符 整数2 ]
操作符 | 含义 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
实例:比较两个整数的大小
3. 字符串比较
格式:[ "字符串1" 操作符 "字符串2" ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在
4. 逻辑测试(短路运算)
格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
- -a或&&:逻辑与,“而且”的意思全真才为真,一假即为假。
- -o或||:逻辑或,“或者”的意思一真即为真,全假的才为假
- !:逻辑否
三元运算符
[ 表达式 ] && a || b
当条件表达式为真时,取a值;当条件表达式为假时,取b值
5. if语句
单分支结构
单分支
if 判断条件;
then 条件为真的分支代码
fi
双分支结构
格式:
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
包剪锤:
#!/bin/bash
# 1 布 2 锤子 3 剪刀
read -p "请输入 1布 2 锤 3 剪刀:" human
m=`echo $[RANDOOM%3+1]`
if [ $human -eq $m ]
then
echo "平局了"
elif [ $human -eq 1 -a $m -eq 2 -o $human -eq 2 -a $m -eq 3 -o $human -eq 3 -a $m -eq 1 ]
then
echo "你赢了"
else
echo "你输了"
fi
多分支结构
多分支
if 判断条件1
then
条件1为真的分支代码
elif 判断条件2
then
条件2为真的分支代码
elif 判断条件3;then
条件3为真的分支代码
...
else
以上条件都为假的分支代码 托底
fi
#!/bin/bash
#90到100分为优秀,80到89为良好,60到79为合格,10到59为不合格,10分以下是出生
read -p " 请输入你的成绩 " grade
if [ $grade -ge 90 ] && [ $grade -le 100 ]
then
echo " 你的成绩优秀"
elif [ $grade -ge 80 ] && [ $grade -le 89 ]
then
echo " 你的成绩良好"
elif [ $grade -ge 60 ] && [ $grade -le 79 ]
then
echo " 你的成绩为合格"
elif [ $grade -ge 10 ] && [ $grade -le 59 ]
then
echo " 你的成绩不合格 "
else
echo " 你是个出生 "
fi
6. case
case 变量 in
模式1)....;;模式2)....;;*) ....;;
esca
实例:
#输入yes或no中任意一个或多个字母的大小写都能识别为yes或n0
#!/bin/bash
read -p " 请输入 yes/no " key
case $key in
[nN]|[nN][oO])
echo " 你输入的是no "
;;
[yY]|[yY][eE][sS])
echo " 你输入的是yes "
;;
*)
echo " 你输入的格式不对,请重新输入"
echo ` bash $0 `esac