C04S04-Shell编程之函数

一、函数

1. 函数概述

函数是把相对独立的代码写在一起形成代码块,可以重复调用。通过函数,可以将一个较大的工程项目分为若干个小模块。

2. 函数语法

  1. 函数语法一

    function 函数名 {
      # 执行的代码
    }
    
    # 函数的调用
    函数名
    
  2. 函数语法二

    函数名 (){
      # 执行的代码
    }
    
    # 函数的调用
    函数名
    

3. 函数返回值

在Shell脚本中,可以通过return来设置函数的返回值,返回函数的退出状态码。

return的使用原则:

  • 函数一结束,就取返回值。
  • return语句的范围是0~255,一旦超出范围就会除以256来取余。

return的意义是在函数的内部做控制流程,将最后的状态码告诉给调用者,告诉调用者函数的执行情况。调用者再根据函数的这些情况来选择后续代码的具体操作。return的返回值可以自定义,所以调用者可以根据不同的返回值来进行选择判断。

4. 函数传参

  1. 函数传参的语法

    函数名 (){
      # 执行的代码
    }
    
    函数名 参数
    
    • 函数中要设置位置变量,根据调用函数时设置的参数来进行传参。

5. 函数的作用范围

  1. Shell脚本中定义的变量默认是全局变量(gobal),也就是在整个脚本环境中有效;从变量的定义声明开始,一直到脚本结束都有效,除非显式删除变量。
  2. 要想把变量的有效范围限制在函数里,那么需要使用local来定义声明局部变量。
  3. 如果gobal变量和local变量同名,local变量会优先于gobal变量,直至函数结束。
  4. 函数只在当前脚本环境中有效,也就是函数的声明和调用要在同一个文件。

6. 函数的递归

递归就是在一个函数当中调用函数本身。函数主要作用就是实现某一功能的代码的重复利用,函数递归也是如此。主要用于解决有着与其相似子问题的问题。问题的规模会不断减小,直到一个问题的基本情况,这个问题可以直接解决,而不用进一步递归。

函数递归主要分为基本代码部分和递归代码部分。基本部分是递归的终止条件,当符合某个条件时候,就会直接输出或返回某值而不递归调用;递归部分也就是调用函数自身,函数的输入会逐渐接近基本条件,直到符合基本条件终止递归。

计算阶乘,就是一个典型的函数递归。

#! /bin/bash

func1 ()
{
  if [ $1 -eq 1 ]
  then
    echo 1
  else
    local temp=$(($1 - 1))
    local result=$(func1 $temp)

    echo "$(($1 * result))"
  fi
}

read -p "请输入一个数字:" num

func1 $num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值