【Shell脚本函数介绍】

文章目录


一、什么是函数?

在 Shell 中,函数就是一段可以重复调用的脚本代码块。

它的作用类似于 C、Python、Java 中的函数,支持 参数传递返回值


二、函数的定义方式

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

1. 普通写法

bash 复制代码
function_name() {
    commands
}

2. 带 function 关键字写法

bash 复制代码
function function_name {
    commands
}

三、函数的调用

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

bash 复制代码
#!/bin/bash

hello() {
    echo "Hello, Shell!"
}

# 调用函数
hello

输出结果:

复制代码
Hello, Shell!

四、函数参数

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

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

示例

bash 复制代码
#!/bin/bash

show_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)

bash 复制代码
#!/bin/bash

check_num() {
    if [ $1 -gt 10 ]; then
        return 0  # 0 表示成功
    else
        return 1  # 1 表示失败
    fi
}

check_num 15
if [ $? -eq 0 ]; then
    echo "数字大于10"
else
    echo "数字不大于10"
fi

输出:

复制代码
数字大于10

2. 使用 echo 返回值

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

bash 复制代码
#!/bin/bash

sum() {
    echo $(($1 + $2))
}

result=$(sum 10 20)
echo "结果是: $result"

输出:

复制代码
结果是: 30

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

默认情况下,函数内定义的变量是 全局变量

如果希望只在函数内部有效,需要使用 local 关键字。

bash 复制代码
#!/bin/bash

myfunc() {
    local name="Shell"
    echo "函数内部: $name"
}

name="Linux"
myfunc
echo "函数外部: $name"

输出:

复制代码
函数内部: Shell
函数外部: Linux
相关推荐
真夜8 小时前
关于对echart盒子设置百分比读取的宽高没有撑开盒子解决方案
前端
楠木6858 小时前
RAG 资料库 Demo 完整开发流程
前端·ai编程
肠胃炎8 小时前
挂载方式部署项目
服务器·前端·nginx
像我这样帅的人丶你还8 小时前
使用 Next.js + Prisma + MySQL 开发全栈项目
前端
FPGA小迷弟8 小时前
FPGA 时序约束基础:从时钟定义到输入输出延迟的完整设置
前端·学习·fpga开发·verilog·fpga
毛骗导演8 小时前
@tencent-weixin/openclaw-weixin 插件深度解析(四):API 协议与数据流设计
前端·架构
毛骗导演9 小时前
@tencent-weixin/openclaw-weixin 插件深度解析(二):消息处理系统架构
前端·架构
IT_陈寒9 小时前
深入理解JavaScript:核心原理与最佳实践
前端·人工智能·后端
MrGud9 小时前
Cesium中的坐标系及其转换
前端·cesium
小付学代码9 小时前
香港地图可编辑版
前端