美文网首页
4.函数的定义、执行、传参和递归函数

4.函数的定义、执行、传参和递归函数

作者: 不安分的情绪 | 来源:发表于2018-01-18 13:48 被阅读0次

Bash(Bourne Again shell)也跟其他编程语言一样也支持函数,一般在编写大型脚本中需要用到,它可以将shell脚本程序划分成一个个功能相对独立的代码块,使代码的模块化更好,结构更加清晰,并可以有效地减少程序的代码量。但是bash作为一种解释性语言,bash 在编程能力方面提供的支持并不像其他编译性的语言(例如 C 语言)那样完善,执行效率也会低很多。

函数的定义、执行与传参

定义
格式1

function name() {
      command 1
      command 2 
       ...
}

格式2

name() {
    command 1
    command 2
       ...
}

可以带function name()定义,也可以直接name()定义,不带任何参数。

执行
函数只有在调用时,才会生效。调用通过函数名进行。

name

传递参数

# cat func.sh
#!/bin/bash
#
a="This is a"
b="This is b"

name() {
    local c="This is c"
    local d="This is d"

    echo $a, $b
    echo $c
    return 0
}

echo $d
name

执行如下:

# bash func.sh

This is a, This is b
This is c

说明:

  • a和b定义的时全局变量
  • c和d定义的时局部变量,只能在函数name中使用
  • $a是第一个参数$1,$b是第一个参数$2,以此类推$n是第n个参数$n。
  • return 0参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果作为返回值。

递归函数

所谓递归函数,就是函数调用自身。例如:

#!/bin/bash
function name() {
        echo $1
        name hello
        sleep 1
}
name

运行此脚本后不断打印出hello,按Ctrl+C结束。

实例:斐波那契数列
斐波那契数列是指类似于0,1,1,2,3,5,8,13,21,……的一组数,在数学上,斐波纳契数列有递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),我们也根据这个来用shell编出来,代码如下:

#!/bin/bash
declare -a a

a=(0 1)

echo ${a[0]}
echo ${a[1]}

for ((i=2;i<10;i++));do
   let a[i]=a[i-1]+a[i-2]
done

echo ${a[*]}

用函数实现


图片.png

相关文章

  • 4.函数的定义、执行、传参和递归函数

    Bash(Bourne Again shell)也跟其他编程语言一样也支持函数,一般在编写大型脚本中需要用到,它可...

  • js函数条件

    函数定义与执行 变量与函数预解析 提取行间事件 匿名函数 函数传参 作业

  • 函数

    简单函数格式 定义 调用函数 传参函数格式: 传参数 定义 注意 重点 实例(简单) 实例(传参) 实例函数(调用...

  • Day61-shell编程_函数|数组

    函数 1.如何定义函数和调用函数 2.如何给函数传递一个参数 3.函数接收N多个参数传递 4.函数传参------...

  • Summary(2)

    函数 函数的定义 传参 - 实参、形参 自身调用- 递归 返回值 - 零个到多个 在其他程序文件中进行调用 作用域...

  • js总结(4.函数)

    函数 ** 1.函数** 2.定义函数 3.定义带参函数 4.带有返回值的函数

  • Golang基础

    基础 定义变量 函数 循环 条件语句 指针 结构体 数组和切片 map 函数传参传函数 方法 接口 Reader ...

  • typeScript学习02

    typescript中的函数 ts中函数定义 ts中函数的传参 ts中的函数的可选参数(js中函数的形参和实参可以...

  • 算法总结

    递归 定义一个函数,在函数内调用函数本身定义好返回条件想好要传的参数 迭代 通过循环语句重复执行,直到达到边界条件...

  • python函数详解

    函数定义 格式 函数定义实例: 5050 三种传参方式 按位置顺序传参 李诗才 按关键字传参,参数顺序可以任意 李...

网友评论

      本文标题:4.函数的定义、执行、传参和递归函数

      本文链接:https://www.haomeiwen.com/subject/vygioxtx.html