首先,要明确“break”与“continue”的区别: break:在for循环使用break,则跳出这个循环,循环命令结束 continue: 使用后,在当前循环终止命令,直接进入下个循环 而break 与 countine 都是作用于单个循环,如果想要进行多层循环操作,则需要在后面加数字,如 break 2和continue 2。
[root@localhost ~]# cat sleep.sh
#!/bin/bash
echo -n "倒计时:"
for i in `seq 9 -1 1`
do
echo -n -e "\b$i"
sleep 1
done
echo
执行代码
[root@localhost ~]# ./sleep.sh
倒计时:8
[root@localhost ~]# cat for_sleep.sh
#!/bin/bash
#监控主机存活的脚本
for ((;;))
do
ping -c1 $1 &>/dev/null
if [ $? -eq 0 ]
then
echo -e "`date +"%F %H:%M:%S"`: $1 is \033[32m up \033[0m"
else
echo -e "`date +"%F %H:%M:%S"`: $1 is \033[31m down \033[0m"
fi
#脚本节奏控制 生产环境建议一分钟及以上
sleep 5
done
执行代码
这段代码,默认循环输出1–9,但是使用continue跳过输出5
[root@localhost ~]# cat continue.sh
#!/bin/bash
for ((i=0;i<10;i++))
do
if [ $i -eq 5 ]
then
#本循环到此结束,可以开始下一次循环了
continue
else
echo $i
fi
done
执行代码
[root@localhost ~]# ./continue.sh
0
1
2
3
4
6
7
8
9
默认循环输出1–9,当输出到5的时候跳出循环
[root@localhost ~]# cat break.sh
#!/bin/bash
for ((i=0;i<10;i++))
do
echo $i
if [ $i -eq 5 ]
then
break
fi
done
执行代码
[root@localhost ~]# ./break.sh
0
1
2
3
4
5
要求用户输入一个字母,当输入Q的时候退出
[root@localhost ~]# cat for_break.sh
#!/bin/bash
for ((;;))
do
read -p "请您输出一个大写字母:" ch
if [ $ch == 'Q' ]
then
break
else
echo "您输入的字母是:"$ch
fi
done
执行代码
[root@localhost ~]# ./for_break.sh
请您输出一个大写字母:W
您输入的字母是:W
请您输出一个大写字母:E
您输入的字母是:E
请您输出一个大写字母:R
您输入的字母是:R
请您输出一个大写字母:Q
[root@localhost ~]# vi for_break.sh
#!/bin/bash
for ((i=1;i<100;i++))
do
echo "#loop $i"
for ((;;))
do
echo "haha"
break
done
sleep 3
done
执行代码
[root@localhost ~]# ./for_break.sh
#loop 1
haha
#loop 2
haha
#loop 3
haha
break 2
[root@localhost ~]# vi for_break.sh
#!/bin/bash
for ((i=1;i<100;i++))
do
echo "#loop $i"
for ((;;))
do
echo "haha"
break 2
done
sleep 3
done
执行代码
[root@localhost ~]# ./for_break.sh
#loop 1
haha
直接结束