Shell脚本条件 i f 语句、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脚本中 一定要注意空格的使用比如在[]中别忘记加空格等。

猜你喜欢

转载自blog.csdn.net/weixin_44324367/article/details/111299842