循环指令
–if
–while
–for
–case
案例1
1.用户给定路径
2.输出文件大小最大的文件
3.递归子目录
#/bin/bash
oldIFS=$IFS
IFS=$'\n'
for i in `du -a $1 | sort -nr`; do
filename=`echo $1 | awk `{print $2}``
if [ -f $filename ]; then
echo $filename
exit 0
fi
done
IFS=$oldIFS
echo "not find ...."
exit 2
案例2:
1.循环遍历文件每一行:流程控制语句
2.定义一个计数器num
3.打印num正好是文件行数
首先创建文件test.txt,并且写入内容如下:
touch test.txt
vi test.txt
a 1
b 2
c 3
#!/bin/bash
# 第一种写法
oldIFS=$IFS
IFS=$'\n'
num=0
for i in `cat test.txt` ; do
echo $1
((num++))
done
echo num: $num
IFS=$oldIFS
#!/bin/bash
# 第二种写法
num=0
lines=`cat test.txt | wc -l`
for ((i=1; i<= lines; i++)); do
head -$i test.txt | tail -1
((num++))
done
echo num: $num
#!/bin/bash
# 第三种写法
exec 8<&0
exec 0< test.txt
num=0
while read line; do
echo $line
((num++))
done
echo num: $num
exec 0<&8
#!/bin/bash
# 第四种写法
num=0
while read line; do
echo $line
((num++))
done 0< test.txt
echo num: $num
#!/bin/bash
# 第五种写法,不过这种写法num值会不正确,因为开启了两个子终端
num=0
cat text.txt | while read line; do
echo $line
((num++))
done
echo num: $num