break continue exit对比:
示例1:break命令跳出整个循环。
[root@abc scripts]# cat break1.sh
#!/bin/bashfor((i=0;i<=5;i++))
doif [ $i -eq 3 ]thenbreakfiecho $i
done
echo "ok"[root@abc scripts]# sh break1.sh
0
1
2
ok
可以看到i等于3及以后的循环没有被执行,但是循环外的echo执行了。
示例2:continue结束本次循环。
[root@abc scripts]# cat continue1.sh
#!/bin/bashfor((i=0;i<=5;i++))
doif [ $i -eq 3 ]thencontinuefiecho $i
done
echo "ok"[root@abc scripts]# sh continue1.sh
0
1
2
4
5
ok
可以看到只有i等于3这层循环没有被执行,其他循环全部执行了。循环外的echo也执行了。
示例3:exit的例子就不敲了,前面已经接触到很多,表示终止shell程序。
示例4:开发shell脚本实现为服务器临时配置多个IP,并且可以随时撤销配置的所有IP。IP地址的范围为10.0.2.1~10.0.2.16, 其中10.0.2.10 不能配置。
给网卡配置额外的IP,有两种方法:
方法一:
ifconfig eth0:0 10.0.2.10/24 up
ifconfig eth0:0 10.0.2.10/24 down
方法二:
ip addr add 10.0.2.10/24 dev eth0 label eth0:0
ip addr del 10.0.2.10/24 dev eth0 label eth0:0
脚本程序:
[root@abc scripts]# cat continue2.sh
#!/bin/bashfor ip in {1..16}
doif [ $ip -eq 10 ]thencontinuefiip addr add 10.0.2.$ip/24 dev eth0 label eth0:$ip
done
我们试着给网卡来增加一个额外的IP地址:
先查看下网卡的名称:
是ens33:
一个操作成功,然后再进行循环操作应该就不是问题。
将脚本再修改下:
[root@abc scripts]# cat continue2.sh
#!/bin/bashfor ip in {1..16}
doif [ $ip -eq 10 ]thencontinuefiip addr add 10.0.2.$ip/24 dev ens33 label ens33:$ip
done
再使用ip a命令进行查看:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:5f:b4:6e brd ff:ff:ff:ff:ff:ffinet 192.168.17.108/24 brd 192.168.17.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 10.0.2.1/24 scope global ens33:1valid_lft forever preferred_lft foreverinet 10.0.2.2/24 scope global secondary ens33:2valid_lft forever preferred_lft foreverinet 10.0.2.3/24 scope global secondary ens33:3valid_lft forever preferred_lft foreverinet 10.0.2.4/24 scope global secondary ens33:4valid_lft forever preferred_lft foreverinet 10.0.2.5/24 scope global secondary ens33:5valid_lft forever preferred_lft foreverinet 10.0.2.6/24 scope global secondary ens33:6valid_lft forever preferred_lft foreverinet 10.0.2.7/24 scope global secondary ens33:7valid_lft forever preferred_lft foreverinet 10.0.2.8/24 scope global secondary ens33:8valid_lft forever preferred_lft foreverinet 10.0.2.9/24 scope global secondary ens33:9valid_lft forever preferred_lft foreverinet 10.0.2.11/24 scope global secondary ens33:11valid_lft forever preferred_lft foreverinet 10.0.2.12/24 scope global secondary ens33:12valid_lft forever preferred_lft foreverinet 10.0.2.13/24 scope global secondary ens33:13valid_lft forever preferred_lft foreverinet 10.0.2.14/24 scope global secondary ens33:14valid_lft forever preferred_lft foreverinet 10.0.2.15/24 scope global secondary ens33:15valid_lft forever preferred_lft foreverinet 10.0.2.16/24 scope global secondary ens33:16valid_lft forever preferred_lft foreverinet6 fe80::aba8:2213:e8e:55cd/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::e286:21be:3b1b:25a/64 scope link noprefixroutevalid_lft forever preferred_lft forever