Shell函数

一、Shell函数概述

函数的定义:封装的可重复利用的具有特定功能的代码

函数的作用就是可以在shell脚本当中做出一个类似自定义执行命令 的东西,最大 的功能就是简化我们很多的代码。

函数的优点

  • 把相同的程序定义成函数,可以减少整个程序的代码量
  • 增加程序段 可读性,便于管理
  • 修改只需修改函数内就行,不需要在程序内到处找需要修改的地方

二、函数的格式

函数格式一:
function 函数名 {
  命令序列
}
函数格式二:
函数名() {
  命令序列
}
调用函数格式一:直接调用
函数名
调用函数格式一:赋值再输出
result=`函数名`
echo "想要输出的结果"

写一个脚本里面包括函数备份yum线上源,创建yum本地源和清理缓存安装httpd服务
在这里插入图片描述

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

三、函数返回值

1.return

return表示退出函数并返回一个退储值,脚本中可以用$?变量表示该值

使用原则:
1.函数已结束就去返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2.退出状态码必须是0~255,超出时值将除以256取余

#!/bin/bash
function  shu {
   read -p "请输入:" shu
   return $[$shu * 2]
}
shu
echo $?

在这里插入图片描述
在这里插入图片描述

2.echo

echo可以返回任何字符串结果
通常用于返回数据,例如:字符串值或列表值

#!/bin/bash
function  shu {
   read -p "请输入:" shu
   echo $[$shu * 2]
}
shu

在这里插入图片描述
在这里插入图片描述

四、函数的传参

函数也是有参数的,它的内置变量与shell脚本很类似,函数的名称表示 $0 ,而后续变量也是以 $1 、$2 …来替换的。这里比较容易搞混,因为函数是一个方法,我们看代码时候直接从代码的主题部分去看,然后代码中调用了什么函数我们再去看这个函数是做什么的就不会搞混。

在这里插入图片描述

1.直接看代码主体部分,num1和num2分别为用户输入的两个变量的值,这里输入的是20和35
2.然后发现调用了函数test,并传入了两个参数,第一个数为shu1,也就是20,第二个数是shu2,也就是35
3.然后在函数体内,定义了变量sum等于两个参数的和,也就是20和35,20+35=55.

在这里插入图片描述

在这里插入图片描述

五、函数变量的作用范围

函数在shell脚本中仅在当前shell环境中有效
shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令

在这里插入图片描述

在这里插入图片描述

六、函数的递归

函数调用自己本身的函数
阶乘
在这里插入图片描述
函数iii内有一个参数$1
1.先进行判断:如果传入的参数为1;则直接输出1,因为1的阶乘为1
2.传入的参数不是1‘
a。定义局部变量temp为传入的参数-1
b。定义局部变量result为(调用函数自身,传入的参数为局部变量temp)
c。输出当前函数传入的参数和变量result的乘积’
在这里插入图片描述

七、递归目录

显示本目录下的所有目录和文件(包含子目录下的目录和文件)

#!/bin/bash
list_files () {
for f in `ls $1`
do
  if [ -d "$1/$f" ]
  then
    echo "+$2$f"
    list_files "$1/$f" " $2"
  else
    echo "-$2$f"
  fi
done
}
list_files "/var/log" ""

在这里插入图片描述

在这里插入图片描述

八、创建函数库

shell 函数库也是一个 shell 脚本,不过可以在一个函数库中仅存储其他 shell 脚本中需要调用的函数
创建函数库脚本文件:myfuncs.sh ,在里边写入加减法等运算的函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值