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.1、case结构条件句语法
case $name in;PART1) cmd ;;PART2) cmd ;;*) cmd ;;esac
注意:case 支持glob 风格的通配符:
* : 表示任意长度任意字符
? : 表示任意单个字符
[] :指定范围内的任意单个字符
a|b : a 或b
2.2、case结构条件句范例
例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/y、yes各种大小写组合为yes;回答n/N、no等各种大小写组合为no