Shell条件语句之if语句、case语句
一、i f 语句
1. 单分支if语句
条件判断语句,用条件来控制判断是否执行命令
语句格式:
if 条件测试 #用来筛选是否进入命令序列
then 命令序列 #这里是满足条件测试后执行的命令
fi #fi是结尾
注意:以 i f 开始 就要记得以f i 结束,这两个是一对,少写就报错。
示例
这里的-gt是大于,-ge才是大于等于
2. 双分支 i f 语句
一般的格式:
if 条件测试 #用来筛选是否进入命令序列
then 命令序列1 #这里是满足条件测试后执行的命令
else 命令序列2 #这是是不满足条件所执行的命令,如果没有命令,则不执行直接结束。
fi #fi是结尾
3. 多分支结构
由于判断分区更加精细的需要,用多分支线结构来进行分类输出。
即:满足第一个条件测试后,再次进行筛选,以此类推。
这里用一个简单多分支结构来实验
#!/bin/bash
#学习成绩的分档
read -p "请输入您的分数(0-100):" score
if [ $score -ge 0 ] && [ $score -le 100 ]
then
if [ $score -ge 90 ] && [ $score -le 100 ]
then
echo " 恭喜得到$score分,棒! "
elif [ $score -ge 70 ] && [ $score -le 89 ]
then
echo "得到$score分,再接再厉!"
elif [ $score -ge 60 ] && [ $score -le 69 ]
then
echo "仅仅及格,你这不点赞收藏? "
elif [ $score -ge 0 ] && [ $score -le 59 ]
then
echo "得到$score分,就这点分还来白嫖?快去一键三连! "
fi
else
echo " 请正确输入! "
fi
这里具体输入测试以下结果:
二、case语句多分枝结构
(执行效率比if快,它直接去找相关的满足的条件,而if一条一条往下找,会慢一点)
一般的格式:
case 变量值 in
模式 1) #符合模式1时,执行命令1
命令序列 1 #这里是一个具体的命令1
;; #这里表示命令序列1的结束
模式 2)
命令序列 2
;;
......
*) #默认其他没有模式的执行
默认命令序列
esac #反写case固定格式
模式中可以使用方括号表示一个连续的范围,如"[ 0-9 ]"
#!/bin/bash
#case测试
read -p "请输入你的ACP成绩(0-100):" score
case $score in
[89][0-9]|100)
echo "$score,可以通过!"
;;
[1-7][0-9])
echo "$score,同志仍需努力"
;;
[0-9])
echo "$score,同志仍需努力"
;;
*)
echo "请正确输入分数"
esac
注意:shell脚本中 一定要注意空格的使用比如在[]中别忘记加空格等。