shell脚本中的循环

Posted 学习linux的菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中的循环相关的知识,希望对你有一定的参考价值。

常用到的循环有for循环和while循环。

  1. for循环
[[email protected] sbin]# cat for.sh
#!  /bin/bash

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

脚本中的 seq 5 表示从1到5的一个序列。你可以直接运行这个命令试下。脚本执行结果为:

[[email protected] sbin]# sh for.sh
1
2
3
4
5

通过这个脚本就可以看到for循环的基本结构:

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

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

[[email protected] sbin]# for i in 1 2 3 a b; do echo $i; done
1
2
3
a
b

也可以写引用系统命令的执行结果,就像那个 seq 5 但是需要用反引号括起来:

[[email protected] sbin]# for file in `ls`; do echo $file; done
case.sh
first.sh
for.sh
if1.sh
if2.sh
if3.sh
option.sh
read.sh
sum.sh
variable.sh
  1. while循环
[[email protected] sbin]# cat while.sh
#! /bin/bash

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

while 循环格式也很简单:

while  条件; do

          command
done

上例脚本的执行结果为:

[[email protected] sbin]# sh while.sh
5
4
3
2
1

另外你可以把循环条件拿一个冒号替代,这样可以做到死循环,常常这样写监控脚本:

while :; do
    command
    sleep 3
done
shell脚本中的函数

函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。有时候脚本中的某段代码总是重复使用,如果写成函数,每次用到时直接用函数名代替即可,这样就节省了时间还节省了空间。
[[email protected] sbin]# cat func.sh
#! /bin/bash

function sum()
{
    sum=$[$1+$2]
    echo $sum
}

sum $1 $2

执行结果如下:

[[email protected] sbin]# sh func.sh 1 2
3

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

function 函数名() {

command

}

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




以上是关于shell脚本中的循环的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

[转帖]Shell脚本中的break continue exit return

shell脚本中的循环

Shell脚本-循环语句

Eclipse 中的通用代码片段或模板

shell脚本基础三(循环篇)