news 2026/5/19 23:03:35

【Shell脚本函数介绍】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Shell脚本函数介绍】

文章目录

  • 一、什么是函数?
  • 二、函数的定义方式
    • 1. 普通写法
    • 2. 带 `function` 关键字写法
  • 三、函数的调用
  • 四、函数参数
      • 示例
  • 五、函数返回值
    • 1. 使用 `return` 返回状态码(0~255)
    • 2. 使用 `echo` 返回值
  • 六、函数与全局变量/局部变量

一、什么是函数?

在 Shell 中,函数就是一段可以重复调用的脚本代码块。
它的作用类似于 C、Python、Java 中的函数,支持参数传递返回值


二、函数的定义方式

在 Shell 中定义函数有两种写法:

1. 普通写法

function_name(){commands}

2. 带function关键字写法

functionfunction_name{commands}

三、函数的调用

定义函数后,只需要写函数名即可调用:

#!/bin/bashhello(){echo"Hello, Shell!"}# 调用函数hello

输出结果:

Hello, Shell!

四、函数参数

在函数中,可以通过特殊变量来获取传入的参数:

  • $1表示第 1 个参数
  • $2表示第 2 个参数
  • $#表示参数个数
  • $@表示所有参数(以列表形式)
  • $*表示所有参数(整体形式)

示例

#!/bin/bashshow_params(){echo"第一个参数:$1"echo"第二个参数:$2"echo"参数总数:$#"echo"所有参数(分开):$@"echo"所有参数(整体):$*"}show_params"Linux""Shell""Function"

运行结果:

第一个参数: Linux 第二个参数: Shell 参数总数: 3 所有参数(分开): Linux Shell Function 所有参数(整体): Linux Shell Function

五、函数返回值

在 Shell 中,函数返回值有两种方式:

1. 使用return返回状态码(0~255)

#!/bin/bashcheck_num(){if[$1-gt10];thenreturn0# 0 表示成功elsereturn1# 1 表示失败fi}check_num15if[$?-eq0];thenecho"数字大于10"elseecho"数字不大于10"fi

输出:

数字大于10

2. 使用echo返回值

因为return只能返回整数(状态码),要返回字符串或其他数据,常用echo并结合命令替换$()

#!/bin/bashsum(){echo$(($1+$2))}result=$(sum1020)echo"结果是:$result"

输出:

结果是: 30

六、函数与全局变量/局部变量

默认情况下,函数内定义的变量是全局变量
如果希望只在函数内部有效,需要使用local关键字。

#!/bin/bashmyfunc(){localname="Shell"echo"函数内部:$name"}name="Linux"myfuncecho"函数外部:$name"

输出:

函数内部: Shell 函数外部: Linux
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 7:15:08

开发者生态建设:围绕TensorRT构建技术社区的思考

开发者生态建设:围绕TensorRT构建技术社区的思考 在当今AI应用加速落地的时代,一个耐人寻味的现象是:许多团队能在几天内训练出高精度模型,却要花上几周甚至几个月才能把它们稳定部署到生产环境。这背后的核心瓶颈之一&#xff0c…

作者头像 李华
网站建设 2026/5/19 7:06:29

高校AI教学实验平台建设:基于TensorRT的标准镜像分发

高校AI教学实验平台建设:基于TensorRT的标准镜像分发 在高校人工智能课程日益普及的今天,一个令人头疼的问题反复出现:学生在实验室跑通的模型,换一台机器就报错;训练好的网络部署到边缘设备时延迟高得无法接受&#x…

作者头像 李华
网站建设 2026/5/19 7:06:22

打造高性能RAG系统:检索+生成全流程TensorRT加速

打造高性能RAG系统:检索生成全流程TensorRT加速 在企业级智能问答、知识库助手等实时交互场景中,用户对响应速度的要求越来越高。一个看似简单的“提问-回答”过程背后,往往依赖复杂的AI推理链路——尤其是基于检索增强生成(RAG&a…

作者头像 李华
网站建设 2026/5/19 7:57:32

基于ARMCortex-M4F内核的MSP432MCU开发实践【3.1】

2.主模式 通过设置UCMODEx=11、USCYNC=1,置位UCMST控制位,eUSCI_B模块将被配置为I2C主模式。若当前主机是多主机系统的一部分时,必须将UCMM置位,并将其自身地址编程写入UCBxI2COA寄存器。UCA10=0时,选择7位寻址模式; UCA10=1时,选择10位寻址模式。UCGCEN控制位选择eUSC…

作者头像 李华
网站建设 2026/5/19 14:23:17

STM32串口DMA与空闲中断联合应用实战案例

STM32串口DMA与空闲中断联合应用实战:如何实现高效、低CPU占用的不定长数据接收?在嵌入式开发中,你是否遇到过这样的场景?多个传感器通过串口持续发送数据,主控MCU却因频繁中断而“卡顿”;接收到的数据总是…

作者头像 李华
网站建设 2026/5/19 14:22:24

药品说明书简化:专业术语解释在TensorRT上自动转换

药品说明书简化:专业术语解释在TensorRT上自动转换 在医院候诊室里,一位老年患者拿着刚开的处方药说明书皱眉——“本品通过抑制血管紧张素转化酶活性,降低外周血管阻力”这样的句子对他而言如同天书。而与此同时,医生正被堆积如山…

作者头像 李华