AI智能
改变未来

shell编程之case语句与for循环语句详细


shell编程之case语句与for循环语句

case分支语句
case语句可以使脚本程序的结构更加清晰,层次分明。

case语句的结构:
适用情况:某个变量存在多种取值,对每种取值执行不同的命令序列。与if相识,不过if是判断不同的条件,而case是判断一个变量的不同取值。

case语句格式:case 变量值 in模式1)命令序列1;;模式2)命令序列2;;....*)默认命令序列esac

case执行流程
首相使用“变量值”与模式1进行比较,若取值相同则执行模式1后面的命令序列,遇到“;;”后跳转esac,表示结束分支;若与模式1不匹配,则继续执行模式2进行比较,若取值相同则执行模式2后的命令序列,依次类推;若找不到任何匹配的值,则执行默认模式*)后的命令序列

case分支语句使用注意项:
case行尾必须为单词“in”,每一模式必须以右括号“)”结束
双分号“;;”表示命令序列的结束
模式字符串中,使用方括号“[ ]”表示连续范围,还以使用“|”表或
最后的“)”表示默认模式,“”表示通配符

**实例:检查用户输入的字符类型的 shell脚本**[root@localhost ~]# vim susu.sh#!/bin/bashread -p \"请输入一个字符,并回车键确认:\" LLLcase \"$LLL\" in[a-z]|[A-Z])echo \"你输入的是字母$LLL!\";;[1-9])echo \"你输入的是数字$LLL!\";;*)echo \"请输入字母或数字\";;esac

for循环语句
适用于列表对象无规律,且来源已固定(如某个列表文件)

for语句的结构:
需要指定一个变量及可能的取值列表,不同的取值执行相同的命令序列,直到变量值用完才退出循环。

for语句格式:for 变量名 in 取值列表do命令序列done

for语句的执行流程:
首相将取值列表第1个值赋予给变量,并执行do···done循环体中的命令序列;然后再将第2个值赋予给变量,并执行循环体中的命令序列;以此类推直到取值列表取值用完退出for循环

实例:根据IP地址列出主机状态[root@localhost ~]# vim dats.sh#!/bin/bashHIHI=$(cat /root/dats.txt)  //创建并指定变量名for IP in $HIHI				//指定变量名和取值列表doping -c 3 -i 0.2 -W 3 $IP &> /dev/nullif [ $? -eq 0 ]				//执行是否成立Then							//成立执行的命令序列echo \"up\"Else							//执行不成立echo \"down\"			//不成立执行的命令序列fidone

If ,for以及其他shell脚本语句,都可以嵌套使用
while循环语句
适用于控制循环次数,操作对象按数字编号,按特定条件执行重复操作等。

while语句的结构:
根据特定的条件反复执行一个命令序列,直到该条件不再满足为止。应避免死循环,否则后面的命令操作无法执行

while循环语句格式:while 条件测试操作do命令序列done

While语句的执行流程:
首先判断while后的条件测试结果,如果条件成立,则执行do···循环体中的命令序列,然后返会while再次判断条件测试结果,直到不成立才结束循环。while语句中有两个特殊的条件特使操作:true(真)和false(假)。表示条件成立或不成立,同样也可以使用到if语句中

实例:猜价格游戏[root@localhost ~]# vim bb.sh#!/bin/bashPOPO=$(expr $RANDOM / 100)     //一种特殊的算法OPOP=0							   //对应let使用echo \"猜猜我心中的数字是多少0~999!\"while true							//true表示真,成立doread -p \"我心中的数字是多少呢?\" NIMAlet OPOP++				//每循环+1if [ $NIMA -eq $POPO ] ; thenecho \"恭喜你答对了!我心中的数字是$NIMA\"echo \"你总共猜了$OPOP次\"exit 0			//成立则退出elif [ $NIMA -gt $POPO ] ; thenecho \"太高了\"elseecho \"太低了\"fidone
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell编程之case语句与for循环语句详细