目录
一、嵌套if语句
二、case语句
case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写。
case 语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个不同的条件,而 case 语句只是判断一个变量的不同取值。
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 1
;;
* )
默认命令序列
esac
case 行尾必须为单词“in”,每一模式必须以右括号“)”结束。双分号“;;”表示命令序列的结束。模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号 “|”表示或,如“A|B”。 最后的“*)”表示默认模式,其中的*相当于通配符。
case 语句的执行流程:首先使用“变量值”与模式 1 进行比较,若取值相同则执行模式 1 后的命令序列,直到遇见双分号“;;”后跳转至 esac,表示结束分支;若与模式 1 不相匹配, 则继续与模式 2 进行比较,若取值相同则执行模式 2 后的命令序列,直到遇见双分号“;;”后 跳转至 esac,表示结束分支……依此类推,若找不到任何匹配的值,则执行默认模式“*)” 后的命令序列,直到遇见 esac 后结束分支。
三、for 语句
读取不同的变量值,用来逐个执行同一组命令
for变量名 in 取值列表
do
命令序列
done
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。
当面对各种列表重复任务时,使用简单的if语句已经难以满足要求,而顺序编写全部代码更是显得异常繁琐、困难重重。
语法结构
(1)列表循环
(2)不带列表循环
(3) 类c风格的for循环
for ((expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环.
expr3:决定循环变量如何改变,决定循环什么时候退出
类c风格运算符用法
++ 自身变量+1
-- 自身变量-1
+=5 自身变量+5
-=5 自身变量-5
*=5 自身变量*5
/=5 自身变量/5
%=5 自身变量%5
不带列表循环执行时由用户指定参数和参数的个数决定的
for变量名
do
command
done
四、while 语句
while循环
1.语法结构
2.死循环
语法结构(3种)
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
语法结构.
while 表达式
do
command
done
while死循环
while [ 1 -eq 1 ] 写一个永远为真的表达式,1等于1这个条件永远为真,所以这个脚本会一直循环下去。
do
commnand
done
while true
do
command
done
while :
do
comnand
done
五、until循环
和while相反, 条件为假进入循环,条件为真退出循环
语法结构
until 表达式.
do
command
done
六、循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况。
控制循环的命令
1.continue
继续,但不会执行循环体内下面的代码,重新开始下一次循环
2.break
打断,马上停止本次循环,执行循环体外的代码
3.exit
直接跳出程序,后面可跟状态返回码如exit 1等等
七、实例
1.猜数字
2.买商品
3.三角形