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
thena=$(($num*4))return 0elseecho "输入错误"return 1fi
}
qqq
if [ $? -eq 0 ]
then
echo "ok"
else
exit
fi

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

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

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

6、函数递归

函数调用自己本身的函数

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

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

echeng () {if [ $1 -eq 1 ]thenecho 1elselocal 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SCIE与SCI期刊的区别

在学术出版领域,SCI(Science Citation Index)和SCIE(Science Citation Index Expanded)是两个关键的索引数据库,它们对科研人员在选择发表论文的期刊时起着至关重要的作用。虽然这两个术语经常被交替使用&a…

linux创建账号

在Linux中创建用户账号通常使用useradd命令。以下是一个基本的示例: sudo useradd -m 用户名这里-m选项意味着创建用户主目录,如果不存在的话。 如果你还想设置用户密码,可以使用passwd命令: sudo passwd 用户名这将提示你输入…

Python100题(含答案)

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末 温馨提示:篇幅有限,已打包文件夹,获取方式在:文末 篇幅有限,这份完整版的Python100题已经上传,朋友们如果…

from import *

项目结构 假设我们的项目结构如下: my_project/ |-- dataset/ | |-- __init__.py | |-- imbalance_cifar.py | |-- balance_cifar.py |-- main.py代码示例 1. dataset/imbalance_cifar.py # dataset/imbalance_cifar.pyclass IMBALANCECIFAR10:def __init…

easyx之图形库复习--自制写轮眼的图形绘制

引子效果图如下: 什么是easyx? EasyX 是针对 C/C 的图形库,可以帮助使用C/C语言的程序员快速上手图形和游戏编程。比如,可以用 VC EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方…

软考 系统架构设计师系列知识点之杂项集萃(42)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(41) 第67题 Windows操作系统在图形界面处理方面采用的核心架构风格是( )风格。Java语言宣传的“一次编写,到处运行”的特性,从架构风格…

AI PPT生成器,一键在线智能生成PPT工具

PPT作为商业沟通和教育培训中的重要工具,PPT制作对于我们来说并不陌生。但是传统的PPT制作不仅耗时,而且想要做出精美的PPT,需要具备一定的设计技能。下面小编就来和大家分享几款AI PPT工具,只要输入主题,内容就可以在…

学生分组

题目描述 有 n 组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界 R 和下界 L (L≤R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 N 组学生的人数都在 [L,R] 中。 输入格式 第一行…

1台SW工作站5人同时使用能实现吗

在当今的数字化时代,高效的工作方式和技术创新是企业竞争力的重要组成部分。SolidWorks作为一款功能强大的三维设计软件,广泛应用于机械、电子、建筑等多个领域。然而,随着企业规模的扩大和团队人数的增加,如何充分利用有限的资源…

关于undo的问题

以下都查看下 undo保留时间: show parameter undo; 查UNDO段状态及自动调整的保留时间命令: select BEGIN_TIME,END_TIME,MAXQUERYLEN,MAXQUERYSQLID,TUNED_UNDORETENTIONfrom V$UNDOSTAT Order By begin_time Desc; 查UNDO段EXPIRED等使用情况&#…

大模型网信办备案全网最详细流程【附附件】

本文要点:大模型备案最详细说明,大模型备案条件有哪些,《算法安全自评估报告》模板,大模型算法备案,大模型上线备案,生成式人工智能(大语言模型)安全评估要点,网信办大模型备案。 大模型备案安…

Linux企业 集群批量管理-秘钥认证

集群批量管理-秘钥认证 概述 管理更加轻松:两个节点,通过秘钥认证形成进行访问,不需要输入密码,单向服务要求(应用场景): 一些服务在使用前要求我们做秘钥认证 手动写批量管理脚本名字&#x…

【Python入门与进阶】Python 中的正则表达式

Python 中的正则表达式是通过内置模块 re 来实现的。正则表达式是一种用于模式匹配和文本处理的强大工具,可以用于查找、替换、分割字符串等操作。 基本用法 以下是 re 模块中一些常用的函数和方法: re.compile(pattern, flags0):编译正则…

来自 Kubecon Paris 的快讯

一年一度的 KubeconEU 审查时间到了——它未经过滤,偶尔不受 CNCF 的欢迎——但剧透警告,巴黎取得了巨大的成功。我们总是爱这里的人,我们并不总是爱场地或演出管理,但巴黎是一场胜利,更重要的是,Kubernete…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限,出海开拓更广阔的国际市场需求,增加销售额,分散市场风险,还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海,要么出局”的声音。扬帆出海,参与全球…

C语言 | Leetcode C语言题解之第155题最小栈

题目: 题解: //单调栈 单调递减 typedef struct {//正常 stackint stack[10000];int stackTop;//辅助 stackint minStack[10000];int minStackTop; } MinStack;MinStack* minStackCreate() {MinStack* newStack (MinStack *) malloc(sizeof(MinS…

零基础入门办公软件速成学习 沈阳电脑办公软件培训

专业指导:由专业的培训师或讲师提供指导,确保员工能够全面、系统地学习软件的各种功能和技巧。 定制课程:根据公司需求和员工现有水平定制课程内容,确保培训的针对性和实用性。 互动学习:通过实时演示、练习和答疑环节…

Android SurfaceFlinger——SF与HWC交互流程(六)

在上一篇 HWC2On1Adapter 初始化完成后,调用 initWithDevice() 实例化 HwcHal 对象,然后创建高级接口(IComposer),使得调用者能够通过这个接口与硬件进行交互。这里我们就来看一下 HwcHal 和 IComposer 的初始化流程。…

到底什么是载波聚合?

载波聚合技术是无线通信系统中的一项关键创新,它极大地提升了数据传输的效率和速度。 这项技术的核心思想其实相当直观,即:如果能够将多个独立的通信路径或连接聚合起来,那么相比单一路径,就能够传输更多的信息。 这就…

mysql设置密码复杂度策略,登录失败次数限制

在配置文件中加入如下配置,重启mysql服务 [mysqld] #密码复杂度插件 plugin-load-addvalidate_password.so validate-passwordFORCE_PLUS_PERMANENT validate_password_policy2 # 0简单 1普通 2困难 validate_password_length9 # 密码长度限制 #登录失败次数、时间…