Shell循环控制与递归查找

循环控制

重复的执行某些操作

实例1:打印1-100中的奇数

# !/bin/bash
for var in `seq 1 2 100`    #seq 提供一个数值区间  `shell命令`
do 
	printf "$var "          #打印单个数字不换行
done

结果图:
在这里插入图片描述
实例2:在1的基础上每十个数换行

# !/bin/bash
	count=0                 	#定义一个计数器
for var in `seq 1 2 100`    
do 
	printf "$var "  
	count=`expr $count + 1`		#expr 提供数值的计算 = - * / % 每打印一个count+1
		num=`expr $count % 10` 	#判断是否输出了10 个数字
	if test $num -eq 0 
	then
		printf "\n"    			#转义字符  \n换行 
	fi
done

结果图:
在这里插入图片描述
实例3:打印下图所示三角形
在这里插入图片描述

# !/bin/bash
x=1
for (( i=4;i>=0;i-- )) 	#  (( 数学表达式 ))  表达方式与Java相似
do						#第一层循环
	for (( k=0;k<i;k++ ))   #输出星星前面的空格
	do
		printf " "		#打印空格
	done
	for(( j=0;j<x;j++ ))   #打印星星个数,下一行比上一行多2
	do
		printf '*'		#打印星星
	done
	x=`expr ${x} + 2 `	
	printf "\n"			#打印完一行后换行
done

结果图:
在这里插入图片描述

递归查找

自己调用自己

实例:通过递归查找某路径下的所有子孙文件

# !/bin/bash
function viewf(){			#定义一个方法
	files=`ls $1`			#获取文件列表
	cd $1					#进入文件
	for f in $files			#获取子文件列表
	do
		if test -d $f		#判断是否是文件夹
		then			
			echo "$f是文件夹"
			viewf $f		#是文件夹则调用自己循环往下一级目录查找
		else
			echo "$f"		#不是文件夹则输出文件名
		fi
	done
	cd ../					#返回上一级文件夹
}
read -p "路径:" path		#输入查找的路径
viewf $path				#制定参数

结果图:查找工作目录下的所有子孙文件
在这里插入图片描述

[注]:seq与expr 的详细用法可以调用man手册查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值