Shell编程-08-Shell中的循环语句
? ? 循环语句常用于重复执行一条命令或一组命令等,直到达到结束条件后,则终止执行。在Shell中常见的循环命令有while、until、for和select等。 while语句基础语法while <条件表达式> do 语句 done while循环读取文件
exec < FILE while read line do command done
cat FILEPATH/FILE | while read line do command done
while read line do command done < FILE while示例1、打印数字 [[email?protected] Test]# cat while.sh #!/bin/bash a=$1 while [ ${a} -ge 0 ] do echo "Current number is:" ${a} a=$((a-1)) done [[email?protected] Test]# bash while.sh 5 Current number is: 5 Current number is: 4 Current number is: 3 Current number is: 2 Current number is: 1 Current number is: 0 2、读取文件 # 读取网卡配置文件 [[email?protected] Test]# cat readnet.sh #!/bin/bash while read line do echo ${line} done < /etc/sysconfig/network-scripts/ifcfg-ens5f1 [[email?protected] Test]# bash readnet.sh TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens5f1 UUID=dbab37df-749f-4cf5-b0a9-c9d7e6632f44 DEVICE=ens5f1 ONBOOT=yes IPADDR=192.168.8.8 NETMASK=255.255.255.0 GATEWAY=192.168.8.1 until语句基础语法until <条件表达式> do 语句 done
until示例[[email?protected] Test]# cat until.sh #!/bin/bash a=$1 until [ ${a} -ge 10 ] do echo "Current number is:" ${a} a=$((a-1)) if [ $a -lt 0 ] then break fi done [[email?protected] Test]# bash until.sh 5 # 不满足条件时,进入循环体 Current number is: 5 Current number is: 4 Current number is: 3 Current number is: 2 Current number is: 1 Current number is: 0 [[email?protected] Test]# bash until.sh 50 # 满足条件时,则不进入循环体 [[email?protected] Test]# for语句? ? for循环语句与while循环诗句类似,但for循环语句主要用于有限次的循环场景,while主要无限次循环的场景,如守护进程 基础语法1、第一种格式 for var in list do 语句 done
2、第二种格式 for((ex1;exp2;exp3)) do 语句 done
for示例1、打印数据 [[email?protected] Test]# cat for.sh #!/bin/bash echo "first format for sentense " for i in {1..5} do echo ${i} done echo "second format for sentense" for((j=1;j<=5;j++)) do echo ${j} done [[email?protected] Test]# bash for.sh first format for sentense 1 2 3 4 5 second format for sentense 1 2 3 4 5 2、打印文件名 [[email?protected] Test]# cat printfilename.sh #!/bin/bash path=$1 for filename in $(ls $1) do echo ${filename} done [[email?protected] Test]# bash printfilename.sh "/root/Test/" caseif.sh case.sh compareNum.sh eval.sh exec.sh for.sh if.sh para.sh ping.sh printfilename.sh readnet.sh shift.sh testPID.sh testposition.sh until.sh while.sh select语句? ? select 语句常用于创建选择性菜单。在执行带有select循环语句的脚本时,输出会按照数字顺序列表显示列表选项,并显示提示符(默认为#?),等待用户做出选择。 基础语法select var in list do 语句 done
select示例1、选择目录文件 [[email?protected] Test]# cat select.sh #!/bin/bash select file in $(ls $1) do echo "Current file is:"${file} done [[email?protected] Test]# bash select.sh /root/Test 1) caseif.sh 7) if.sh 13) shift.sh 2) case.sh 8) para.sh 14) testPID.sh 3) compareNum.sh 9) ping.sh 15) testposition.sh 4) eval.sh 10) printfilename.sh 16) until.sh 5) exec.sh 11) readnet.sh 17) while.sh 6) for.sh 12) select.sh #? 2 Current file is:case.sh #? 3 Current file is:compareNum.sh #? 19 Current file is: #? 循环中断控制? ? 大家有过编程基础的童鞋都知道,在循环体出现某一种,我们可以提前中断循环体。在Shell中常用的循环中断控制有break、continue、exit、return。
以上详细解释如下所示:
循环中断控制示例1、break示例 [[email?protected] Test]# cat break.sh #!/bin/bash for(( i=1;i<$1;i++ )) do if [ ${i} -eq 3 ] then echo "break test" break fi echo ${i} done [[email?protected] Test]# bash break.sh 5 1 2 break test 2、continue示例 [[email?protected] Test]# cat continue.sh #!/bin/bash for(( i=1;i<$1;i++ )) do if [ ${i} -eq 3 ] then echo "contiunue test" continue fi echo ${i} done [[email?protected] Test]# bash continue.sh 5 1 2 contiunue test 4 3、exit示例 [[email?protected] Test]# cat exit.sh #!/bin/bash for(( i=1;i<$1;i++ )) do if [ ${i} -eq 3 ] then echo "exit test" exit 88 fi echo ${i} done [[email?protected] Test]# bash exit.sh 5 1 2 exit test [[email?protected] Test]# echo $? 88 循环语句总结
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |