Linux函数

目录

一.概念

(一)什么是函数?

(二)函数的作用

二.函数的表现方式(定义函数)

三.如何获取函数的返回值

四.函数变量的作用范围

五.函数传参

六.函数的递归(在函数体里调用函数本身)

(1)求阶乘

(2)递归目录

七.函数库


一.概念

(一)什么是函数?

在编程中,函数是一种可重用的代码块,用于执行特定的任务或计算。函数接受输入参数,并返回一个输出结果。函数可以使代码更易于维护和组织,同时也可以提高代码的重用性和可读性。在执行函数时,可以通过在函数名称后面加上括号,将所需的参数传递给函数。

(二)函数的作用

使用函数可以避免代码重复使用,将较大的工程代码分割成为若干个较小的功能模块,便于去调用,使得代码更加的简洁明朗,有更强的可读性。

二.函数的表现方式(定义函数)

1)function 函数名{

      命令

      ....

      }

2) 函数名(){

    命令

    ....

    }

调用函数:直接在主代码中使用 函数名 即可

三.如何获取函数的返回值

(1)在函数里使用 echo 返回值,在函数外使用 变量=$(函数名) 获取返回值

(2)在函数里使用 return 返回值,在函数外紧接着使用 echo $? 获取返回值

(注意:只能返回0-255,超出255会除以255取余数来返回)

四.函数变量的作用范围

1)脚本中定义的函数只在脚本的shell环境有效

2)脚本中定义的变量默认在脚本的shell环境中全局有效(在函数体内外都有效)

3)在函数体内使用 local 变量 定义的局部变量只能在函数体内有效,且此后此局部变量与函数体外同名的全局变量没有任何关系

五.函数传参

通过在 调用函数时,后面跟位置参数;在函数体里使用 $1 $2 来引用函数后面跟的位置参数

注意

1)函数体外的 $1 $2等等代表的是执行脚本时,脚本后面跟的 第一个 第二个 位置参数

      函数体外的$#代表的是执行脚本时,脚本后面跟的 所有位置参数的 个数  

      函数体外的$@ $*代表的是执行脚本时,脚本后面跟的 所有 位置参数 

2)函数体里面的 $1 $2 代表的是调用函数时,函数名后面跟的 第一个 第二个 位置参数

      函数体外的$#代表的是调用函数时,脚本后面跟的 所有位置参数的 个数  

      函数体外的$@ $*代表的是调用函数时,脚本后面跟的 所有 位置参数 

3)不管在函数体内还是函数体外,$0 都代表脚本本身

六.函数的递归(在函数体里调用函数本身)

(1)求阶乘

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

(2)递归目录

dgml() {
    for i in $(ls $1)
    do
        if [ -d $1/$i ];then
            echo -e "$2$1/$i 为目录"
            dgdir $1/$i "\t$2"
        else
            echo -e "$2$1/$i 为文件"
        fi
    done
}

七.函数库

首先需要将一些常用的函数保存在一个特定的函数库文件中,需要使用时可以直接在shell脚本文件开头位置用 source 函数库文件 加载函数即可直接使用。

vim myfunc.sh        #创建特定函数库文件
hanshu1() {....}     #创建函数1
hanshu2() {....}     #创建函数2

vim shell.sh         #编辑shell脚本
source myfunc.sh     #加载函数库文件
hanshu1              #直接调用函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值