Shell中可以采用while循环来实现需要进行循环的操作。
语法结构如下:
while exp
do
command
done
执行过程:while将测试exp的返回值,如果返回值为true则执行循环体的命令,返回值为false则不执行循环。循环完成后会进入下一次循环之前将再次测试。
如果已知循环次数,可以用计数的方式控制循环,在达到规定的循环次数后退出循环。
示例:
#同时计算1到100和以及1到100的奇数和
#脚本内容如下:
sum1=0
sum2=0
i=1
j=1
while [[ "$i" -le "100" ]]
do
let "sum1+=i"
let "j=i%2"
if [[ $j -ne 0 ]];then
let "sum\+=i"
fi
done
echo "$sum1"
echo "$sum2"
输出结果:
5050
2500
示例2使用while命令按行读取文件(实用)
cat data.txt
内容如下:
小明 男 30
小张 男 25
小丽 女 28
#脚本内容如下:
#!/bin/bash
while read Line
do
Name=`echo $Line' | awk '{print $1}'`
Sex=`echo $Line' | awk '{print $2}'`
Age=`echo $Line' | awk '{print $3}'`
echo "我的名字是 $Name ,性别 $Sex 年龄 $Age "
done < data.txt
或者
#!/bin/bash
cat data.txt | while read Line
do
Name=`echo $Line' | awk '{print $1}'`
Sex=`echo $Line' | awk '{print $2}'`
Age=`echo $Line' | awk '{print $3}'`
echo "我的名字是 $Name ,性别 $Sex 年龄 $Age "
done
输出结果:
我的名字是小明,性别男,年龄30
我的名字是小张,性别男,年龄25
我的名字是小丽,性别女,年龄28