news 2026/4/22 20:39:26

【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/4/23 12:31:22

游戏NPC智能化升级:基于TensorRT的轻量对话模型部署

游戏NPC智能化升级:基于TensorRT的轻量对话模型部署 在现代游戏设计中,玩家早已不满足于“你好”“再见”式的机械对白。他们期待的是能记住自己过往选择、会因情绪变化而改变语气、甚至能根据语境幽默回应的NPC——一个真正“活着”的虚拟角色。然而&am…

作者头像 李华
网站建设 2026/4/23 12:31:29

基于STM32的USB HID设备驱动实现完整指南

手把手教你用STM32实现USB HID设备:从协议到实战 你有没有遇到过这样的需求——想让STM32像一个“虚拟键盘”一样自动输入文字?或者希望它能模拟鼠标移动,把传感器数据实时传给PC?这些看似复杂的交互,其实都可以通过 …

作者头像 李华
网站建设 2026/4/23 12:30:20

从Naive到Agentic:RAG架构演进全解析,助你成为大模型应用架构师

本文系统梳理了检索增强生成(RAG)架构的四代演进历程:从基础的三步流程Naive RAG,到增加预检索和后检索处理的Advanced RAG,再到模块化设计的Modular RAG,最后引入智能体概念的Agentic RAG。详细分析了各架…

作者头像 李华
网站建设 2026/4/23 12:32:33

Keil5安装环境准备:操作系统兼容性说明

Keil5安装前必看:你的Windows系统真的兼容吗? 你有没有遇到过这样的情况——兴冲冲下载好Keil5安装包,双击运行后卡在“正在注册驱动”界面?或者明明装好了,连接ST-Link却提示“No J-Link found”,设备管理…

作者头像 李华
网站建设 2026/4/23 12:30:47

STLink驱动下载实战:电脑环境配置指南

STLink驱动安装实战:从零搞定电脑环境配置你有没有遇到过这样的场景?刚拿到一块崭新的STM32 Nucleo开发板,兴冲冲地插上电脑,打开IDE准备烧录第一个“Hello World”程序——结果弹出一条刺眼的错误提示:“No ST-Link d…

作者头像 李华