shell中的条件选择和判断语句
1、条件选择if语句1.1、用法格式
if 判断条件1 ; then 条件为真的分支代码 elif 判断条件2 ; then 条件为真的分支代码 elif 判断条件3 ; then 条件为真的分支代码 else 以上条件都为假的分支代码 fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句。
1.2、经典案例
1、判断年纪
#!/bin/bash read -p "请输入你的年龄:" age if [[ $age =~ [^0-9] ]];then echo "请输入整数!!!" exit 10 elif [ $age -ge 150 ];then echo "你输入的年龄超出范围,请输入正确的年龄!!!" exit 20 elif [ $age -ge 18 ];then echo "你的年龄大于18岁。" else echo "你的年龄小于18岁。" fi
分析:请输入年纪,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否小于150,是否大于等于18。
2、判断学生成绩
#!/bin/bash #判断学生成绩是否及格 read -p "请输入你的成绩:" score if [[ $score =~ [^0-9] ]];then echo "请输入一个整数!!!" exit 10 elif [ $score -gt 100 ];then echo "你输入的成绩超出总分范围,请重新输入!!!" exit 20 elif [ $score -ge 85 ];then echo "你的成绩非常好,请继续保持!!!" elif [ $score -ge 70 ];then echo "你的成绩已经及格,请继续努力!!!" else echo "你的成绩不及格,请继续努力!!!" fi
分析:请输入成绩,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否大于100,是否大于85,是否大于70。
2、条件判断 case2.1、case结构条件句语法
case $name in; PART1) cmd ;; PART2) cmd ;; *) cmd ;; esac
注意:case 支持glob 风格的通配符:
* : 表示任意长度任意字符
? : 表示任意单个字符
[] :指定范围内的任意单个字符
a|b : a 或b
2.2、case结构条件句范例
例1:判断输入的是yes还是no
#!/bin/bash read -p "请输入yes或no:" anw case "$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