系统运维

69.for循环 while循环 break跳出循环

2021-01-14 16:23:12 阅读数 7447 收藏 0

 扩展
select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 

for循环

vim for.sh
#! /bin/bash


for i in 'seq 1 5'; do
      echo $i
done

脚本中的seq1 5表示从1到5的一个序列。

[root@aminglinux-128 ~]# sh for.sh
seq 1 5

for循环的基本结构格式:

for  变量名 in 循环的条件;do

         command

done

这里的“循环的条件”可以是一组数字或者字符串(用一个或者多个空格隔开),也可以是一条命令的执行结果。

[root@aminglinux-128 ~]# for i in 1 2 3 a b; do echo $i; done
1
2
3
a
b

‘’循环的条件‘’还可以引用系统命令的执行结果(如seq 1 5),但必须用反引号括起来。

[root@aminglinux-128 ~]# for file in 'ls';do echo $file; done
ls

while循环

while用来编写死循环的脚本,用来监控某项服务。

while 条件;do

             command

done

示例如下

vim while.sh
#! /bin/bash


a=5
while [ $a -ge 1 ]; do
      echo $a
      a=$[$a-1]
done

脚本执行结果

[root@aminglinux-128 ~]# sh while.sh
5
4
3
2
1

可以用冒号代替循环条件,这样可以做到死循环。

while :;do

             command

done

shell脚本中的函数

shell脚本中的函数就是先把一段代码整理到一个小单元中,并给这个小单元命名,当用到这段代码时直接调用这个小单元名字即可。有时脚本中的某段代码总是重复使用,如果写成函数,每次用到时直接用函数名代替即可。

写一个带有函数功能的shell脚本。

vim func.sh
#! /bin/bash
function sum()
{

  sum=$[$1+$2]
  echo $sum
}

sum $1 $2

该脚本的执行结果

[root@aminglinux-128 ~]# sh func.sh 1 2
3

func.sh中的sum()为自定义的函数。在shell脚本中函数的格式如下:

function 函数名()

{

        command1

        command2

}

在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后。因为函数是要被调用的,如果还没有出现就被调用,肯定会出错。

shell脚本的中断和继续

break

break用在循环中,不管是for或者while都可以。在脚本中使用它,表示退出该层循环。它的上层循环不受影响。

[root@aminglinux-128 ~]# vim break.sh
#! /bin/bash
for i in 'seq 1 5'
do
      echo $i
      if [$i ==3 ]
      then
         break
      fi
      echo $i
done
echo aaaaaaa

脚本中,本意是要把1·5数值赋予i,当i等于3时,会跳出循环,后面的4和5都不会再执行。脚本执行结果:

[root@aminglinux-128 ~]# sh break.sh
seq 1 5
break.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa

continue

continue也是使用在循环中的,当在shell脚本中遇到continue时,结束的不是整个循环,而是本次循环。

[root@aminglinux-128 ~]# vim continue.sh
#! /bin/bash
for i in 'seq 1 5'
do
    echao $i
    if [$i ==3]
    then

        continue
   fi
echo $i
done
echo $i

脚本执行结果

[root@aminglinux-128 ~]# sh continue.sh
continue.sh:行4: echao: 未找到命令
continue.sh:行5: [seq: 未找到命令
seq 1 5
seq 1 5

当i大于3时,出现了continue,所以结束本次循环,continue后面的语句不再执行,继续下一次循环。

exit

exit直接退出整个shell脚本

[root@aminglinux-128 ~]# vim exit.sh
#! /bin/bash
for i in 'seq 1 5'
do
echo $i
if [ $i == 3 ]
then
    exit
fi
echo $i
done
echo aaaaaaa

脚本执行结果

[root@aminglinux-128 ~]# sh exit.sh
seq 1 5
exit.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa