news 2026/6/9 22:35:37

【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/6/8 0:33:11

模型压缩还能保持精度?TensorRT的INT8校准原理揭秘

模型压缩还能保持精度?TensorRT的INT8校准原理揭秘 在当今AI模型越做越大的背景下,一个50层的ResNet推理一次要几十毫秒,部署到摄像头或推荐系统里根本扛不住——延迟太高、功耗太大、成本太贵。更别说那些上百层的Transformer了。可我们又不…

作者头像 李华
网站建设 2026/6/6 3:23:24

电商搜索排序提速:TensorRT优化的向量召回服务

电商搜索排序提速:TensorRT优化的向量召回服务 在电商平台的搜索场景中,用户输入一个关键词后,系统需要在毫秒级时间内从数千万商品中找出最相关的候选集。这背后的第一步——向量召回,早已不是简单的关键词匹配,而是依…

作者头像 李华
网站建设 2026/6/10 13:33:48

教育科技公司如何用TensorRT降低AI课程互动延迟?

教育科技公司如何用TensorRT降低AI课程互动延迟? 在如今的在线教育平台中,AI已经不再是锦上添花的功能模块,而是驱动教学体验升级的核心引擎。从直播课中的实时语音转写,到AI助教对学生的即时答疑;从课堂上的表情情绪识…

作者头像 李华
网站建设 2026/6/9 22:00:45

为什么说TensorRT是大模型商业化落地的关键拼图?

为什么说TensorRT是大模型商业化落地的关键拼图? 在今天的AI服务场景中,一个典型的问题是:我们已经训练出了性能卓越的大模型——比如在自然语言理解任务上准确率超过95%的BERT变体,或者能生成高质量文本的LLM。但当把它部署到线上…

作者头像 李华
网站建设 2026/6/10 13:18:49

客服工单自动分类:中小型企业也能负担得起的AI方案

客服工单自动分类:中小型企业也能负担得起的AI方案 在每天成百上千条用户反馈涌入客服系统时,如何快速识别“账号无法登录”属于技术问题、“订单未发货”应转给物流团队,而不是让人工一条条阅读、打标签?这不仅是效率问题&#x…

作者头像 李华
网站建设 2026/6/10 13:16:55

大数据领域半结构化数据的备份与恢复策略

大数据领域半结构化数据的备份与恢复策略:从“踩坑”到“闭环”的全链路实践 引言:半结构化数据的“备份之痛”,你经历过吗? 凌晨2点,我在运维群里看到紧急告警:数据湖中的用户行为JSON数据丢失了20%——原…

作者头像 李华