发布时间:2026/9/4 3:06:11
【Shell】编程入门到精通保姆级教程:----函数 一、【Shell】编程入门Shell 函数 1.1、函数定义基础linux shell 可以用户定义函数然后在shell脚本中可以随便调用。shell中函数的定义格式如下[function]funname[()]{action;[return int;]}说明1、可以带function fun()定义也可以直接fun()定义,不带任何参数。2、参数返回可以显示加return返回如果不加将以最后一条命令运行结果作为返回值。return后跟数值 n(0-255)。下面的例子定义了一个函数并进行调用#!/bin/bash# author:朱朱# url:www.zhuzhu.comdemoFun(){echo这是我的第一个 shell 函数!}echo-----函数开始执行-----demoFunecho-----函数执行完毕-----输出结果-----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕-----1.2、带return返回值的函数下面定义一个带有return语句的函数#!/bin/bash# author:朱朱# url:www.zhuzhu.comfunWithReturn(){echo这个函数会对输入的两个数字进行相加运算...echo输入第一个数字: readaNumecho输入第二个数字: readanotherNumecho两个数字分别为$aNum和$anotherNum!return$(($aNum$anotherNum))}funWithReturnecho输入的两个数字之和为$?!输出类似下面这个函数会对输入的两个数字进行相加运算... 输入第一个数字:1输入第二个数字:2两个数字分别为1和2!输入的两个数字之和为3!函数返回值在调用该函数后通过$?来获得。注意所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分直至shell解释器首次发现它时才可以使用。调用函数仅使用其函数名即可。注意return语句只能返回一个介于 0 到 255 之间的整数而两个输入数字的和可能超过这个范围。要解决这个问题您可以修改return语句直接使用echo输出和而不是使用returnfunWithReturn(){echo这个函数会对输入的两个数字进行相加运算...echo输入第一个数字: readaNumecho输入第二个数字: readanotherNumsum$(($aNum$anotherNum))echo两个数字分别为$aNum和$anotherNum!echo$sum# 输出两个数字的和}1.3、函数参数 在Shell中调用函数时可以向其传递参数。在函数体内部通过$n的形式来获取参数的值例如$1表示第一个参数$2表示第二个参数…带参数的函数示例#!/bin/bash# author:朱朱# url:www.zhuzhu.comfunWithParam(){echo第一个参数为$1!echo第二个参数为$2!echo第十个参数为$10!echo第十个参数为${10}!echo第十一个参数为${11}!echo参数总数有$#个!echo作为一个字符串输出所有参数$*!}funWithParam1234567893473输出结果第一个参数为1!第二个参数为2!第十个参数为10!第十个参数为34!第十一个参数为73!参数总数有11个!作为一个字符串输出所有参数1234567893473!注意$10不能获取第十个参数获取第十个参数需要${10}。当n10时需要使用${n}来获取参数。另外还有几个特殊字符用来处理参数参数处理说明$#传递到脚本或函数的参数个数$*以一个单字符串显示所有向脚本传递的参数$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$与$*相同但是使用时加引号并在引号中返回每个参数。$-显示Shell使用的当前选项与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误其他任何值表明有错误。二、函数使用注意事项与案例 2.1、$?返回值容易被覆盖$?仅对其上一条指令负责一旦函数返回后其返回值没有立即保存入参数那么其返回值将不再能通过$?获得。测试代码#!/bin/bashfunctiondemoFun1(){echo这是我的第一个 shell 函数!returnexpr11}demoFun1echo$?functiondemoFun2(){echo这是我的第二个 shell 函数!expr11}demoFun2echo$?demoFun1echo在这里插入命令echo$?输出结果这是我的第一个 shell 函数!2这是我的第二个 shell 函数!20这是我的第一个 shell 函数!在这里插入命令0第二次调用demoFun1后没有立即查看$?的值而是先插入了一条别的echo命令最后再查看$?的值得到的是 0也就是上一条echo命令的结果而demoFun1的返回值被覆盖了。下面这个测试连续使用两次echo $?得到的结果不同更为直观#!/bin/bashfunctiondemoFun1(){echo这是我的第一个 shell 函数!returnexpr11}demoFun1echo$?echo$?输出结果这是我的第一个 shell 函数! 2 02.2、函数作为条件判断Shell真假规则函数与命令的执行结果可以作为条件语句使用。要注意的是和 C 语言不同shell 语言中0 代表 true0 以外的值代表 false。示例脚本#!/bin/bashechoHello World !|grep-eHelloecho$?echoHello World !|grep-eByeecho$?ifechoHello World !|grep-eHellothenechotrueelseechofalsefiifechoHello World !|grep-eByethenechotrueelseechofalsefifunctiondemoFun1(){return0}functiondemoFun2(){return12}ifdemoFun1thenechotrueelseechofalsefiifdemoFun2thenechotrueelseechofalsefi其执行结果如下Hello World!01Hello World!truefalsetruefalsegrep是从给定字符串中寻找匹配内容的命令。首先看出如果找到了匹配的内容会打印匹配部分且得到的返回值$?为 0如果找不到则返回值$?为 1。接下来分别将这两次执行的grep命令当作条件语句交给if判断得出返回值$?为 0即执行成功时条件语句为 true当返回值$?为 1即执行失败时条件语句为 false。之后再用函数的return值作为测试其中demoFun1返回值为 0demoFun2返回值选择了任意一个和 0 不同的整数这里为 12。将函数作为条件语句交给if判断得出返回值为 0 时依然为 true而返回值只要不是 0条件语句都判断为 false。

相关新闻

2026/9/4 3:06:11

方差分析ANOVA从原理到实战:用Python完成单因素与多因素检验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 3:01:11

SDN安全实践:DDoS检测与OpenFlow动态防御闭环

简介:本资源是一套面向计算机专业本科生的高分毕业设计实战项目,聚焦SDN环境下DDoS攻击的实时检测与动态防御,适用于毕设选题、课程设计及网络安全方向项目实训。资源包共含完整可运行源码、详细设计报告、系统部署文档及实验验证说明&#x…

2026/9/4 3:01:11

基于SDN的DDoS检测与防御系统:熵值建模+OpenFlow实时引流

简介:本资源是一套面向计算机及相关专业本科生的高分毕业设计实战项目,聚焦SDN环境下DDoS攻击的实时检测与动态防御,专为毕设攻坚、课程设计及网络安全方向实践学习者打造。项目基于OpenFlow协议与Ryu控制器构建可编程网络架构,集…

2026/9/4 4:01:14

4-20mA电流信号采集电路设计:从原理到PCB布局与单片机代码实现

简介:这是一套面向工业测控与嵌入式开发者的4-20mA电流信号采集完整解决方案,适用于STM32F103平台的传感器数据采集、PLC模拟量接口扩展及现场仪表通信等典型场景。资源包含AD格式的原理图与PCB源文件(含隔离设计)、Keil工程源码&…

2026/9/4 4:01:14

跨境电商阿里国际站怎么做?2026 年外贸新手五步起量实操指南

摘要:跨境电商阿里国际站怎么做?2026 年外贸新手面临规则迭代、广告烧钱、询盘转化低等难题,本文从店铺定位到数据复盘,拆解五步实操方法,帮卖家把平台流量真正变成有效询盘和订单。 跨境电商阿里国际站怎么做&#x…

2026/9/4 4:01:14

陶瓷内胆电饭煲选购指南:智能防溢与无涂层技术的核心解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 4:01:14

构建编程行为数据工厂:AI Agent能力训练新范式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 3:56:14

Claude Code国内实战指南:VSCode配置与AI编程助手深度应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…