格式:while list; do list; done

while 条件表达式; do 
    命令
done
#!/bin/bash 
N=0
while [ $N -lt 5 ]; do
    let N++ 
    echo $N
done
# bash test.sh 
1
2
3
4
5

当条件表达式为 false 时,终止循环。

#!/bin/bash
while [ 1 -eq 1 ]; do 
    echo "yes"
done
#!/bin/bash 
while true; do
    echo "yes"
done

还可以条件表达式用冒号,冒号在 Shell 中的意思是不做任何操作。但状态是 0,因此为 true:

#!/bin/bash 
while :; do
    echo "yes"
done

示例 3:逐行处理文本

# cat a.txt 
a b c
1 2 3
x y z

要想使用 while 循环逐行读取 a.txt 文件,有三种方式:

#!/bin/bash
cat ./a.txt | while read LINE; do 
    echo $LINE
done
#!/bin/bash
while read LINE; do
    echo $LINE
done < ./a.txt
#!/bin/bash
exec < ./a.txt	# 读取文件作为标准输出
while read LINE; do
    echo $LINE
done

与 while 关联的还有一个 until 语句,它与 while 不同之处在于,是当条件表达式为 false 时才循环,实际使用中比较少,这里不再讲解。