1. for…in…do…done
命令格式
for var in val1 val2 val3
do
语句1
语句2
...
done
示例1
输出数组{a 2 cc},每个元素一行
for i in a 2 cc
do
echo $i
done
示例2
输出当前路径下的所有文件名,每个文件名一行。
for file in `ls`
do
echo $file
done
示例3
输出1-10。
seq
命令用于生成两个整数之间的所有数字。
for i in $(seq 1 10)
do
echo $i
done
示例4
使用{1..10}
或者 {a..z}
。
for i in {
a..z}
do
echo $i
done
2. while…do…done循环
条件为假时结束循环。
命令格式
while condition
do
语句1
语句2
...
done
示例,文件结束符为Ctrl+d
,输入文件结束符后read
指令返回false
。
while read name
do
echo $name
done
#! /bin/bash
a=3
while [ $a -lt 5 ]
do
echo $a
a=`expr $a + 1`
done
3. until…do…done循环
当条件为真时结束。
命令格式
until condition
do
语句1
语句2
...
done
示例,当用户输入yes或者YES时结束,否则一直等待读入。
until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
do
read -p "Please input yes/YES to stop this program: " word
done
4. break命令
跳出当前一层循环,注意与C/C++不同的是:break不能跳出case语句。
while read name
do
for ((i=1;i<=10;i++))
do
case $i in
8)
break
;;
*)
echo $i
;;
esac
done
done
该示例每读入非EOF的字符串,会输出一遍1-7。
该程序可以输入Ctrl+d文件结束符来结束,也可以直接用Ctrl+c杀掉该进程。
5. continue命令
跳出当前循环。
for ((i=1;i<=10;i++))
do
if [ `expr $i % 2` -eq 0 ]
then
continue
fi
echo $i
done