if,case,for,while

166 阅读5分钟

目录

一、嵌套if语句

二、case语句

三、for 语句

语法结构   

(1)列表循环   

(2)不带列表循环   

(3) 类c风格的for循环

四、while 语句

while循环

语法结构(3种)

五、until循环

六、循环控制语句

控制循环的命令

1.continue

2.break 

3.exit

七、实例


一、嵌套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.三角形