shell第二章——编程之条件语句
条件测试
test命令
- 测试表达式是否成立,若成立返回0,否则返回其他数值
格式:test 条件表达式
格式:【条件表达式】
- 文件测试
[操作符 文件或目录]
- 常用的测试操作符
- -d:测试是否为目录(Directory)
- -e:测试目录或者文件是否存在(exist)
- -f:测试是否为文件(File)
- -r:测试当前用户是否由权限读取(read)
- -w:测试当前用户是否由权限写入(write)
- -x:测试当前用户是否由权限执行(excute)
整数值比较
[整数变量1 操作符 整数变量2]
常用的测试操作符
-eq:等于 ==
-ne:不等于 !=
-gt:大于 >
-lt:小于 <
-le:小于等于 >=
-ge:大于等于 =<
逻辑测试
自定义变量 read -p “ 提示信息” 变量名
格式:[表达式1] 操作符 [表达式2]
格式:命令1 操作符 命令2 …
常用的测试操作符
- a或&&:逻辑与,“而且”的意思
- -o或|| :逻辑或,’或者‘的意思
- !:逻辑否
if语句的结构
单分支结构
实验
vim /ming.sh (随便创建并且编辑一个文件,但必须是sh结尾的)
双分支结构
实验:用if脚本检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
vim test.sh #创建并编辑test.sh
#!/bin/bash #脚本解释器
fi [ -e /root/test.sh ] #输入if条件,-e代表测试文件是否存在
then #then代表然后,符合if条件的才可
if [ -x /root/text.sh ] #这边是嵌入if,在if循环中又嵌入一个if,-x测试文件权限是否可以执行
then echo "文件存在,有权限“ #若文件权限可执行,则输出文件存在,有权限
then else ”文件存在,无权限“ #若文件权限不可执行,则输出文件存在,不可执行
fi #这个嵌入if的结束用fi结束
else ”文件不存在“ #这个是我们初始if的不符合条件的项,不符合,则直接输出文件不存在,无需去检测权限
fi #检测结束
多分枝结构
实验1:实验内容是一张0-100分的卷子,在各分段所给的分数评价
vim zs.sh进入文件
实验2:提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,
如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,
男生进男生组,女生进女生组,如果输入错误请提示错误
read -p "请输入你的成绩:" num
if [ $num -gt 0 ] && [ $num -le 10 ]
then
read -p "请输入性别:" sex
if [ $sex == "男" ]
then echo "男生组"
elif [ $sex == "女" ]
then echo "女生组"
else echo "不男不女"
fi
else
echo "淘汰"
fi
case语句
case多分枝结构
逻辑图
实验
一张百分卷子,给个分段的学生打个评价
vim a.sh #创建一个.sh结尾文件,并且进入编辑
read -p "输入成绩:" s #输入自变量
[[ $s -ge 85 && $s -le 100 ]] && s=great #双中括号内可以直接打且的&&符号, s=great 为给学生的评价,下面一样
[[ $s -ge 70 && $s -le 84 ]] && s=standard
[[ $s -ge 60 && $s -le 69 ]] && s=jiayou
case $s in #case判断,变量为$s
great) #这里$s变量为great,输入变量的内容
echo "$s 666" #成绩great的给出评价666
;;
standard)
echo "$s 还不错哦"
;;
jiayou)
echo "$s 加加油"
;;
*)
echo "快去死" #不满足上述条件的,自动按这条条件去执行
esac # 结束