shell 脚本 - 条件分支–if 和case
条件选择 if
有多个条件时,逐个条件进行判断,第一次遇到“真”条件时,执行其分支,而后结束这个if 语句。且 if 语句可嵌套
格式
单分支
if 判断条件;then
条件为真的分支代码
fi
双分支
if 判断条件;then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if 判断条件1;then
条件1为真的分支代码
elif 判断条件2;then
条件2为真的分支代码
……
else
以上条件都为假的分支代码
fi
范例
#!/bin/bash
#********************************************************************
# Author:dawn
# Date:2020-08-11 15:25:10
# FileName:if_bmi.sh
# URL:https://blog.csdn.net/xiao_dan_
# Version:1.0
# Description:The test script
#********************************************************************
read -p "请输入身高(m为单位):" HIGH
if [[ ! "$HIGH" =~ ^[0-2](\.[0-9]{,2})?$ ]];then
echo "身高输入错误,请核实!"
exit 1
fi
read -p "请输入体重(kg为当单位):"WEIGHT
if [[ ! "$HIGH" =~ ^[0-9]{1,3}$ ]];then
echo "输入错误的体重,请核实!"
exit 1
fi
BMI=`echo $WEIGHT/$HIGH^2|bc`
if [ $BMI -le 18 ];then
echo "太瘦了,多吃点!"
elif [ $BMI -lt 24 ];then
echo "身材很棒!继续保持哟!"
else
echo "太胖了,注意饮食,加强运动!"
fi
条件判断 case
格式
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
……
*)
默认分支
;;
esac
case 支持glob 风格的通配符
* 任意长度任意字符
? 任意单个字符
[] 指定范围内的任意单个字符
| 或 , 如a | b
范例
#!/bin/bash
#********************************************************************
# Author:dawn
# Date:2020-08-11 15:42:02
# FileName:case_yesorno.sh
# URL:https://blog.csdn.net/xiao_dan_
# Version:1.0
# Description:The test script
#********************************************************************
read -p "Do you agree(yes|no)? " INPUT
case $INPUT in
[yY]|[Yy][Ee][Ss])
echo "your input is yes"
;;
[nN]|[Nn][Oo])
echo "your input is no"
;;
*)
echo "input false;please input yes or no!"
esac