本文基于Linux上CentOS 7版本进行演示
目录
一.if多分支语句
先判断用户输入的是否是数字,如果是字母或者特殊字符就提示"输入错误,请重新输入!",如果是数字则进行下一步判断分数范围,丢弃0以下和100以上的值,最后进行比较输出
#!/bin/bash
read -p "请输入您的成绩:" score
if echo "$score"|grep "[a-zA-Z]">/dev/null
then
printf "输入错误,请重新输入!"
elif echo "$score"|grep "[0-9]">/dev/null
then
if [ $score -gt 100 ] || [ $score -lt 0 ]
then
printf "输入值超出范围,请重新输入!"
elif [ $score -ge 85 ]
then
printf "A"
elif [ $score -ge 70 ]
then
printf "B"
elif [ $score -ge 60 ]
then
printf "C"
else
printf "D"
fi
else
printf "输入错误,请重新输入!"
fi
[root@sulibao sh]# bash chengji.sh 请输入您的成绩:- 输入错误,请重新输入![root@sulibao sh]# [root@sulibao sh]# bash chengji.sh 请输入您的成绩:l 输入错误,请重新输入![root@sulibao sh]# [root@sulibao sh]# bash chengji.sh 请输入您的成绩:56 D[root@sulibao sh]# bash chengji.sh 请输入您的成绩:87 A[root@sulibao sh]# bash chengji.sh 请输入您的成绩:99 A[root@sulibao sh]# bash chengji.sh 请输入您的成绩:-2 输入值超出范围,请重新输入![root@sulibao sh]# bash chengji.sh 请输入您的成绩:102 输入值超出范围,请重新输入![root@sulibao sh]# |
二.case语句
思路和if语句差不多,只是条件符合时通过case语句进行判断,
#!/bin/bash
read -p "请输入您的分数:" score
if echo "$score"|grep "[a-zA-Z]">/dev/null
then
printf "输入错误,请重新输入!"
elif echo "$score"|grep "[0-9]">/dev/null
then
if [ $score -gt 100 ] || [ $score -lt 0 ]
then
printf "超出值范围,重新您输入!"
else
case "$score" in
[8-9][5-9]|100)
#第一个[]内表示十位,第二个[]内表示个位,|表示或的意思,哥哥匹配规则后面需要加上)
echo "A"
;;
[7-8][0-4])
echo "B"
;;
[6][0-9])
echo "C"
;;
*)
#*表示上面条件以外的其他所有条件,类似于else作用
echo "D"
esac
fi
else
printf "输入错误,请重新输入!"
fi
[root@sulibao sh]# bash chengjicase.sh 请输入您的分数:- 输入错误,请重新输入![root@sulibao sh]# bash chengjicase.sh 请输入您的分数:k 输入错误,请重新输入![root@sulibao sh]# bash chengjicase.sh 请输入您的分数:-8 超出值范围,重新您输入![root@sulibao sh]# bash chengjicase.sh 请输入您的分数:103 超出值范围,重新您输入![root@sulibao sh]# bash chengjicase.sh 请输入您的分数:59 D [root@sulibao sh]# bash chengjicase.sh 请输入您的分数:98 A [root@sulibao sh]# bash chengjicase.sh 请输入您的分数:60 C [root@sulibao sh]# bash chengjicase.sh 请输入您的分数:74 B |