shell-流程控制
一、if 条件
then 命令
elif 条件
then 命令 ...
else
命令
fi
[root@vm-paas scwyfy]# cat ifelifelse.sh #!/bin/bash read -p "请输入考试成绩 " s if ((${s} >= 0 && ${s} < 60)) then echo "不及格" elif [[ (${s} > 60 || ${s} == 60) && ${s} < 70 ]] then echo "及格" elif ((s >= 70 && s < 80)) then echo "中等" elif (( s >= 80 && s < 90)) then echo "良好" elif ((s >= 90 && s <= 100)) then echo "优秀" else echo "输入的成绩非法!" fi [root@vm-paas scwyfy]#
二、case 变量值 in
匹配模式1)
命令1
命令2...
;;
匹配模式2)
...
;; // 表示结束
*) // 表示未匹配就走这个
命令1
命令2...
;;
esac // 结束
[root@vm-paas scwyfy]# cat case.sh #!/bin/bash read -p "请输入0-7的数字: " number case $number in 1) echo "星期一" ;; 2) echo "星期二" ;; 3) echo "星期三" ;; 4) echo "星期四" ;; 5) echo "星期五" ;; 6) echo "星期六" ;; 7|0) echo "星期日" ;; *) echo "无效数字" ;; esac
三、 while 条件
do
命令1
命令2...
continue //跳过此次循环
break // 终止循环
done
[root@vm-paas scwyfy]# cat while.sh #!/bin/bash read -p "请输入循环的次数:" number i=0 while ((i < number )) do let i++ if ((i == 3)) then echo "跳过打印循环${i}" continue fi if ((i == 5)) then echo "终止${i}后面的循环" break fi echo "循环${i}" done echo "循环结束"
四、for 值 in 值列表 do 命令1 命令2... done [root@vm-paas scwyfy]# cat for.sh #!/bin/bash for i in 1 3 5 7 do echo "hello${i}" done
五、select 值 in 值列表
do
命令1
命令2
...
break // 必须要用,不然要一直循环下去
done
[root@vm-paas scwyfy]# cat select.sh #!/bin/bash echo "您的爱好是什么?" select hobby in "编程" "游戏" "运动" "篮球" do case $hobby in 编程) echo "努力吧" break ;; 游戏) echo "远离游戏" break ;; 运动|篮球) echo "运动挺好" break; ;; *) echo "输入有误" break ;; esac done echo "您的爱好是${hobby}"