linux中shell循环操作及案例

循环指令

–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
发布了135 篇原创文章 · 获赞 41 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/u014651560/article/details/104346251