shell中的条件选择和判断语句

1、条件选择if语句

1.1、用法格式

if 判断条件1 ; then  条件为真的分支代码elif 判断条件2 ; then  条件为真的分支代码elif 判断条件3 ; then  条件为真的分支代码else  以上条件都为假的分支代码fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句。

1.2、经典案例

1、判断年纪

#!/bin/bashread -p "请输入你的年龄:" ageif [[ $age =~ [^0-9] ]];then   echo "请输入整数!!!"   exit 10elif [ $age -ge 150 ];then   echo "你输入的年龄超出范围,请输入正确的年龄!!!"   exit 20elif [ $age -ge 18 ];then   echo "你的年龄大于18岁。"else   echo "你的年龄小于18岁。"fi

分析:请输入年纪,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否小于150,是否大于等于18。

 

2、判断学生成绩

#!/bin/bash#判断学生成绩是否及格read -p "请输入你的成绩:" scoreif [[ $score =~ [^0-9] ]];then   echo "请输入一个整数!!!"   exit 10elif [ $score -gt 100 ];then   echo "你输入的成绩超出总分范围,请重新输入!!!"   exit 20elif [ $score -ge 85 ];then   echo "你的成绩非常好,请继续保持!!!"elif [ $score -ge 70 ];then   echo "你的成绩已经及格,请继续努力!!!"else   echo "你的成绩不及格,请继续努力!!!"fi

分析:请输入成绩,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否大于100,是否大于85,是否大于70

2、条件判断 case

2.1case结构条件句语法

case $name in;PART1)  cmd  ;;PART2)  cmd  ;;*)  cmd  ;;esac

 

注意:case 支持glob 风格的通配符:

   * : 表示任意长度任意字符

  ? : 表示任意单个字符

  [] :指定范围内的任意单个字符

  a|b : a b

2.2case结构条件句范例

1:判断输入的是yes还是no

#!/bin/bashread -p "请输入yes或no:"  anwcase "$anw" in   [yY][eE][sS]|[yY])    echo "输入的为:yes";;   [nN][oO]|[nN])    echo "输入的为:no";;   *)    echo "输入错误,请重新输入";;esac

分析:请输入yes or no,回答Y/yyes各种大小写组合为yes;回答n/Nno等各种大小写组合为no