1、while循环
while循环允许重复执行一组命令,直到出现某种情况,不满足条件的时候结束循环。
语法:
while command
do
   如果command为true,将执行的语句
done  注意:如果结果值为true,则执行给定的语句。如果command为false,则不会执行任何语句,程序将跳转到done语句之后的下一行。
例如,
#!/bin/bash
x=1
while [ $x -le 5 ]
do
  echo "x = $x"
  x=$(( $x + 1 ))
done
输出:
x = 1
x = 2
x = 3
x = 4
x = 5
每次循环输出变量x的值, x=$(( $x + 1 ))是将变理x的值加1,直到不满足条件循环结束。
2、for循环
for循环对列表中元素进行操作。它为列表中的每个项元素重复一组命令。
语法:
for var in item1 item2 ... itemN
do
   为每个元素执行的语句
done注意:上面的var是变量名,item1到itemN是由空格(单词)分隔的字符序列。每次执行for循环时,变量var的值被设置为item列表中的下一个单词,从Item1到itemN。
例如,
#!/bin/bash  
for((i=1;i<=10;i++));  
do   
  echo $(expr $i \* 3 + 1);  
done
输出:
4
7
10
13
16
19
22
25
28
31
3、until循环
until命令和while命令类似,while能实现的脚本until同样也可以实现,区别是while循环在条件为true时继续执行循环而until则在条件为false时执行循环。
语法:
until command
do
   在命令为true之前执行的语句
done注意:如果结果值为false,则执行给定的语句。如果该命令为true,则不会执行任何语句,并且程序跳转到done语句之后的下一行。
例如,
#!/bin/bash
i=0
until [[ "$i" -gt 5 ]]    #大于5
do
    let "square=i*i"
    echo "$i * $i = $square"
    let "i++"
done
输出:
0 * 0 = 0
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
5 * 5 = 25
4、select循环
select循环提供了一种简单的方法来创建一个编号菜单,用户可以从中选择选项。当需要要求用户从选项列表中选择一个或多个项目时,它非常有用。
语法:
select var in item1 item2 ... itemN
do
   为每个item执行的语句。
done注意:上面的var是变量名,item1到itemN是由空格(单词)分隔的字符序列。每次执行select循环时,变量var的值被设置为单词列表中的下一个单词,从item1到itemN。对于每个select,将在循环中执行一组命令。这个循环在ksh中被引入,已被改编到bash。在sh中不支持。
例如,
#!/usr/bin/bash
PS3="Select a program to exectue: "
select program in 'ls -F' pwd date
do
  $program
done
(The Command Line)
Select a program to exectue: 2
1) ls -F
2) pwd
3) date
# /home/yang
# 在执行脚本的时候,PS3里面的字符串会显示在终端的底部
输出:
$ bash select.sh
1) ls -F
2) pwd
3) date
Select a program to exectue: 2
/root
5、嵌套循环
所有循环都支持嵌套概念,可以将一个循环放入另一个类似或不同的循环中。根据需求,这种嵌套可以达到无限次。
例如,
#!/bin/bash
a=0
while [ "$a" -lt 10 ]    # 外层循环
do
   b="$a"
   while [ "$b" -ge 0 ]  # 内层循环
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done
输出:
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0