函数-递归

函数就是一个功能
定义函数:描述一个功能的过程

[function] 函数名()
{
	command1
	......
}
	

调用函数:执行一次函数:
函数名 实参1 实参2 实参3…
函数中接受实参:$1 $2 $3…>> shell变量
$# 传递实参的个数
$@引用所有的实参
f(x)=3x+2 f(2)=3*2+2=8

返回值:return 字符串
调用函数时,若有返回值,通过$?来获取
注:只有1byte的宽度<=255,因为shell一般只用于配置,功能函数一般只返回true或false

递归:自己调用自己
本质:when从什么时候开始 when到什么时候结束what每次递归需要干嘛
eg:打印1-100 从1开始,到一百结束,每次打印当前数字

shell是一门弱语言
shell并不关心此串是什么,如果需要进行数学计算,必须用expr,let等等命令来辅助计算。
shell变量:
局部变量:在shell代码中定义的变量,都称作局部变量(用户变量) (小写)
环境变量:用户经常需要用到某些值时,shell将这些值定义为全局变量(大写)

$num $1第一个实参
$?代表上一个函数或上一个命令的返回值

文件流:向该文件写入信息的接口 ->a.txt
流重定向:将当前的文件流改变到其他文件中

>(截断长度为0)
>>(追加到文件末尾)
屏幕(没有缓冲,不能显示内容):/dev/null

练习:
1,打印n-m区间的数字,并求出n-m区间总和

# !/bin/bash
read -p "输入左区间" left
read -p "输入右区间" right
sum=0
function add()
{
	for var in `seq $1 $2`
	do
		echo "$var"
		sum=`expr $var + $sum`
	done
	printf "$sum"
}	
add $left $right

在这里插入图片描述

在这里插入图片描述

3,求m(4位数),逆序打印

# 1/bin/bash
read -p "请输入一个4位数" num

a=`expr $num % 10`
b=`expr $a % 10`
c=`expr $b % 10`
d=`expr $c % 10`
e=`expr $d \* 1000 + $c \* 100 + $b \* 10 + $a`
echo "$e"


在这里插入图片描述

在这里插入图片描述

4,求192.168.8.141~192.168.8.254区间的主机是否在线
4.1求当前用户有多少用户?

# !/binbash
#192.168.8.141~254
online=0
for ip in `seq 141 254`
do
	ping -c 2 -i 0.2 "192.168.8.${ip}" >> /dev/null
	if test $? -eq 0
	then
		online=`expr $online + 1`      #统计在线人数,每返回一个在线online+1
		echo "192.168.8.${ip}在线" >> online.date     #将输出信息“追加”到此文件中
	fi
done
echo "正在查找请多等一会,查看信息请到查看online.date"
echo "一共有${online}在线"

在这里插入图片描述

6.改进第四题

在这里插入图片描述

7,打印100-1(函数调用)

# !/bin/bash
function dy()
{
	for var in `seq 1 100`
	do
		echo "$var"
	done
}
echo "开始调用dy函数"
dy

在这里插入图片描述
/打印100~1(用了函数递归的思想)(默写)

# !/bin/bash
function dg()
{
	if test $1 -eq 0
	then
		return
	fi
	echo "$1"
	dg `expr $1 - 1`	
}
dg 100

在这里插入图片描述

8.9.遍历某层文件,遍历深层次文件

# !/bin/bash
function list()
{
	for var in `ls $1`    #ls为shell遍历命令,$1为输入的路径(path)的实参
	do
		if test -d $1/$var
		then
			echo "-d  ${var}是文件夹"
			list ${1}/${var}                #调用函数,(自己调用自己),递归思想
		else
			echo "--  $var这不是文件夹"	
		fi
	done
}
read -p "请输入路径,开始遍历:" path
list $path      #调用函数

在这里插入图片描述

运行结果
在这里插入图片描述

10.遍历某层路径下的某个文件是否存在?
在这里插入图片描述

运行
在这里插入图片描述

11,将某路径下所有tmp开头的文件或目录移动到指定位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值