【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
相关推荐
Days205023 分钟前
简单处理接口返回400条数据本地数据分页加载
前端
Novlan129 分钟前
@tdesign/uniapp 图标瘦身
前端
ManThink Technology33 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
. . . . .1 小时前
shadcn组件库
前端
2501_944711431 小时前
JS 对象遍历全解析
开发语言·前端·javascript
发现一只大呆瓜2 小时前
虚拟列表:支持“向上加载”的历史消息(Vue 3 & React 双版本)
前端·javascript·面试
css趣多多2 小时前
ctx 上下文对象控制新增 / 编辑表单显示隐藏的逻辑
前端
_codemonster2 小时前
Vue的三种使用方式对比
前端·javascript·vue.js
寻找奶酪的mouse2 小时前
30岁技术人对职业和生活的思考
前端·后端·年终总结
梦想很大很大2 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go