Shell编程 - 函数篇

Bash 脚本中的函数使用指南

1. 概述

函数是将一段代码封装起来并赋予一个名称的代码块。在 Bash 脚本中,函数可以用来:

  • 精简代码:将重复使用的代码封装成函数,减少代码冗余。

  • 提高可读性:让脚本更加规范,便于理解和维护。

  • 方便调试:调试时只需注释或修改函数即可,不影响其他部分。

应用场景

  • 在编写脚本时,尽量使用函数,使脚本更加模块化。

  • 方便后期维护和扩展,提高代码的复用性。

2. 函数的定义格式

2.1 定义方式 01(最完整)

function show() {
    命令
    命令
    内容
    return n  # 函数的返回值
}

2.2 定义方式 02(精简写法,常用)

show() {
    命令
    命令
    内容
    return n  # 函数的返回值
}

2.3 定义方式 03(另一种完整写法)

function show {
    命令
    命令
    内容
    return n  # 函数的返回值
}

3. 函数的使用案例

3.1 案例 1:检查 IP 或 URL 是否可以访问

#!/bin/bash

# 1. 定义变量
read -p "请输入待检查的 IP 或域名: " urls

# 2. 检查 urls 是否为空
function chk_url_empty() {
    if [ -z "$urls" ]; then
        echo "请重新输入: $0 IP 或域名"
        exit 1
    fi
}

# 3. 使用 for 循环检查每个 URL
function chk_ping() {
    for url in $urls; do
        # 4. 使用 ping 检查
        ping -c1 "$url" &>/dev/null
        # 5. 检查返回值
        if [ $? -eq 0 ]; then
            echo "${url} 可以访问"
        else
            echo "${url} 不可以访问"
        fi
    done
}

# 6. 主函数
main() {
    chk_url_empty
    chk_ping
}

# 7. 调用主函数
main

运行示例

请输入待检查的 IP 或域名: 8.8.8.8 baidu.com
8.8.8.8 可以访问
baidu.com 可以访问

4. 函数传参

在 Bash 脚本中,函数传参与脚本传参类似,使用 $n 形式访问参数。

参数对比表

位置参数 Shell 脚本中 函数中
$n 脚本的第 n 个参数 函数的第 n 个参数
$0 脚本的名字 脚本的名字
$# 脚本的参数个数 函数的参数个数
$@$* 脚本的所有参数 函数的所有参数

4.1 案例 2:函数传参示例

#!/bin/bash

# 定义函数
show() {
    cat <<EOF
    show 函数的参数个数: $#
    show 函数的所有参数: $*
    $1.com
    $1.cn
    $1.org
    $1.企业
    $1.icu
    $1.hello
EOF
}

# 调用函数
show $1      # 传递脚本的第一个参数
show $*      # 传递脚本的所有参数

运行示例

bash fun_params.sh kyle ni hh
show 函数的参数个数: 3
show 函数的所有参数: kyle ni hh
kyle.com
kyle.cn
kyle.org
kyle.企业
kyle.icu
kyle.hello

5. 总结

  • 函数的定义:使用 function 关键字或直接定义。

  • 函数的调用:直接使用函数名。

  • 函数传参:使用 $n$#$@$* 等特殊变量。

  • 应用场景:将重复代码封装为函数,提高代码复用性和可读性。


posted @ 2024-12-01 20:40  kyle_7Qc  阅读(103)  评论(0)    收藏  举报