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

2018-01-18  本文已影响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

说明:

递归函数

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

#!/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
上一篇 下一篇

猜你喜欢

热点阅读