Shell脚本学习-循环的控制命令

break continue exit对比:

Shell脚本学习-循环的控制命令_第1张图片

示例1:break命令跳出整个循环。

[root@abc scripts]# cat break1.sh
#!/bin/bash

for((i=0;i<=5;i++))
do
  if [ $i -eq 3 ]
    then
      break
  fi
  echo $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/bash

for((i=0;i<=5;i++))
do
  if [ $i -eq 3 ]
    then
      continue
  fi
  echo $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/bash

for ip in {1..16}
do
  if [ $ip -eq 10 ]
    then
      continue
  fi
  ip addr add 10.0.2.$ip/24 dev eth0 label eth0:$ip
done

我们试着给网卡来增加一个额外的IP地址:

先查看下网卡的名称:

Shell脚本学习-循环的控制命令_第2张图片

 是ens33:

Shell脚本学习-循环的控制命令_第3张图片

一个操作成功,然后再进行循环操作应该就不是问题。

将脚本再修改下:

[root@abc scripts]# cat continue2.sh
#!/bin/bash

for ip in {1..16}
do
  if [ $ip -eq 10 ]
    then
      continue
  fi
  ip addr add 10.0.2.$ip/24 dev ens33 label ens33:$ip
done

再使用ip a命令进行查看:

2: ens33:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5f:b4:6e brd ff:ff:ff:ff:ff:ff
    inet 192.168.17.108/24 brd 192.168.17.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 10.0.2.1/24 scope global ens33:1
       valid_lft forever preferred_lft forever
    inet 10.0.2.2/24 scope global secondary ens33:2
       valid_lft forever preferred_lft forever
    inet 10.0.2.3/24 scope global secondary ens33:3
       valid_lft forever preferred_lft forever
    inet 10.0.2.4/24 scope global secondary ens33:4
       valid_lft forever preferred_lft forever
    inet 10.0.2.5/24 scope global secondary ens33:5
       valid_lft forever preferred_lft forever
    inet 10.0.2.6/24 scope global secondary ens33:6
       valid_lft forever preferred_lft forever
    inet 10.0.2.7/24 scope global secondary ens33:7
       valid_lft forever preferred_lft forever
    inet 10.0.2.8/24 scope global secondary ens33:8
       valid_lft forever preferred_lft forever
    inet 10.0.2.9/24 scope global secondary ens33:9
       valid_lft forever preferred_lft forever
    inet 10.0.2.11/24 scope global secondary ens33:11
       valid_lft forever preferred_lft forever
    inet 10.0.2.12/24 scope global secondary ens33:12
       valid_lft forever preferred_lft forever
    inet 10.0.2.13/24 scope global secondary ens33:13
       valid_lft forever preferred_lft forever
    inet 10.0.2.14/24 scope global secondary ens33:14
       valid_lft forever preferred_lft forever
    inet 10.0.2.15/24 scope global secondary ens33:15
       valid_lft forever preferred_lft forever
    inet 10.0.2.16/24 scope global secondary ens33:16
       valid_lft forever preferred_lft forever
    inet6 fe80::aba8:2213:e8e:55cd/64 scope link tentative noprefixroute dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::e286:21be:3b1b:25a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

你可能感兴趣的:(Shell,linux)