shell的函数

1、定义

将命令序列按照格式写在一起。

格式指的是函数的固定格式,有两种格式

2、作用

(1)方便重复使用

形成一个函数库,集中在一起,随时可以传参调用。

(2)大的工程分割成若干个小的功能模块,提高代码的可读性

3、函数的格式

格式1:

function 函数名 {

命令序列

}

函数名(传参)

格式2:

复制代码
函数名 () {

  命令序列

}

4、return的作用

return只能写在函数的内部,目的是从函数的内部获取一个返回值,用来判断是否继续执行下一个脚本。

echo $? 这个时候不再是判断执行结果,只是一个函数内部的返回值。

在使用return传返回码的时候,默认0是成功,非0都是失败

返回码可以自定义,范围0-255

复制代码
function qqq {
  read -p "输入一个数:" num
if [ $num -eq $num ] &> /dev/null
then
  a=$(($num*4))
 return 0
 else
 echo "输入错误"
 return 1
 fi
}
qqq
if [ $? -eq 0 ]
then
echo "ok"
else
exit
fi

5、函数的传参方式以及函数变量的作用范围

在函数内部定义了全局变量,外部的赋值是不能改变内部函数的全局变量的

加了local之后就是函数内部的变量,而不再是全局变量,外部的赋值会替换内部的变量值

6、函数递归

函数调用自己本身的函数

阶乘:4的阶乘 4×3×2×1=24

用函递归的方式来实现阶乘

复制代码
echeng () {
 if [ $1 -eq 1 ]
 then
 echo 1
 else
 local temp=$(($1-1))
 local result=$(jiecheng $temp)
 echo "$(($1*$result))"
 fi
}
read -p "输入一个数:" num
result1=`jiecheng $sum`
echo $result1

递归目录,把/etc目录下所有的文件递归出来,如果只是目录且该目录下没有文件就打印目录,否则继续打印,直到目>录里面没有文件为止。

复制代码
digui () { 
for file in `ls $1` 
do 
if [ -d "$1/$file" ] 
then 
echo $file digui "$1/$file" 
else 
echo "$file" fi done 
} 
digui $1

7、函数库

函数库中只包含定义的函数,由另外一个脚本传入参数来调用我们定义的函数

jiafa () {

result=((1+$2))

echo $result

}

jianfa () {

result=((1-$2))

echo $result

}

chengfa () {

result=((1*$2))

echo $result

}
. /opt/hanshu.sh

read -p "输入第一个数:" num1

read -p "输入第二个数:" num2

sum=`jiafa num1 num2`

sub=`jianfa num1 num2`

mult=`chengfa num1 num2`

echo $sum

echo $sub

echo $mult

相关推荐
梦想很大很大19 小时前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
Sinclair20 小时前
内网服务器离线安装 Nginx+PHP+MySQL 的方法
运维
叶落阁主20 小时前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
0xDevNull1 天前
Linux切换JDK版本详细教程
linux
进击的丸子1 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
茶杯梦轩1 天前
从零起步学习RabbitMQ || 第二章:RabbitMQ 深入理解概念 Producer、Consumer、Exchange、Queue 与企业实战案例
服务器·后端·消息队列
甲鱼9292 天前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
Johny_Zhao3 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao3 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1234 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统