shell脚本之函数

         Shell函数是在Shell脚本中定义的一段可重复使用的代码块,用于实现代码的模块化和提高代码的可读性。函数可以接收参数,执行一系列命令和操作,并返回结果。通过将常用的代码块封装为函数,可以避免重复编写相同的代码,提高代码的复用性和维护性。函数的定义包括函数名、参数列表和函数体,函数可以通过参数传递和返回值传递实现与调用脚本的交互。

shell函数的作用:

  1. 代码封装和模块化:通过将一段常用的代码封装为函数,可以提高代码的可读性和可维护性,避免重复编写相同的代码。

  2. 提高代码复用性:函数可以在不同的地方调用,从而实现代码的复用。可以将一段常用的逻辑抽象为函数,使得多个脚本可以共享同一个函数。

  3. 参数传递和结果返回:通过函数的参数列表,可以向函数传递输入参数,函数可以根据参数进行相应的操作。同时,函数可以通过return语句返回结果,或者通过全局变量将结果传递给调用函数。

  4. 提高脚本执行效率:通过将一些耗时的操作封装为函数,可以提高脚本的执行效率。函数可以被多次调用,从而避免了重复执行相同的操作。

  5. 代码组织和结构化:通过使用函数,可以将脚本的逻辑分成多个模块,使得代码更加结构化和可读。函数可以按照功能或者逻辑进行划分,提高代码的可维护性。

定义函数的格式

格式一:

function 函数名 {

        命令操作

}

格式二:

函数名(){

         命令操作

}

查看函数与删除函数(Linux命名行环境中)

  • 查看函数 : declare -F
  • 删除函数: unset 函数名

函数的返回值

return 返回值

1)"return"是用来结束函数并返回结果的关键字。可以将一个值作为函数的返回结果,该值可以是整数类型,范围在0-255之间。默认情况下,函数的返回结果为0。当使用"return"关键字并跟随一个数字时,该数字会成为函数的返回结果,可以通过"$?"变量获取函数的返回结果。

2)在使用"return"时,如果返回的结果超过了0-255的范围,将会被256取余,取余的结果作为函数的返回码。例如,如果return后面跟着的数值是260,则返回的结果将是4(260 % 256)。

函数的参数
函数中如何获取参数 $1 $2 .... $N
如何传递参数到函数中
语法: 函数名 参数1 参数2 ... 参数3

变量作用域

​​​​​​​全局变量: 函数外声明的变量,函数内声明的变量默认为全局变量

局部变量:函数内部声明变量前加local 关键字

        例如:local age=0

实战演练,使用函数写脚本

菱形打印

# 定义一个函数,接受一个参数n,打印一个由"*"构成的菱形
function print_diamond() {
    local n=$1
    
    # 打印上半部分菱形
    for ((i=1; i<=n; i++)); do
        for ((j=1; j<=n-i; j++)); do
            echo -n " "
        done
        for ((j=1; j<=2*i-1; j++)); do
            echo -n "*"
        done
        echo
    done
    
    # 打印下半部分菱形
    for ((i=n-1; i>=1; i--)); do
        for ((j=1; j<=n-i; j++)); do
            echo -n " "
        done
        for ((j=1; j<=2*i-1; j++)); do
            echo -n "*"
        done
        echo
    done
}

# 调用函数,传入参数4,打印菱形
print_diamond 4
 

递归函数进行阶乘运算

#!/bin/bash

fact() {
    if [ $1 -eq 1 ]; then
        echo 1
    else
        local temp=$(( $1 - 1 ))
        local result=$(fact $temp)
        echo $(( $1 * $result ))
    fi
}


read -p "请输入一个要阶乘的数值:" n
result=$(fact $n)
echo $result

结果 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值