函数

1、函数介绍function

为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。

且,这个功能在后面的代码中,会重复调用;

def

2、函数的语法格式

函数的写法格式:

function check_cpu {

cat /proc/cpuinfo

}

ls /etc/

check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】

*fun_name() {

函数体

$1 $2 ... $10

}

fun_name 1 2 3

:wq

function.sh 4 5 6 7 8 9 10 11 12 13 14

3、函数的调用  -- return

函数返回值

1、当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令确实正确的,这时候,我们需要通过return返回一个我们需要的错误状态码;

2、函数结束的时候,我们需要指定一个return的正确返回码;

如果使用在循环语句中,return会跳出循环;

4、函数接受参数

函数 变量

和普通的命令一样

只需要注意,在函数接受参数的时候,不会使用外部的传参,而是以脚本内部的参数为准,

5、函数中的变量

本地变量

local 变量名=xxx

本地变量只在本函数内部生效

局部变量

脚本内部的变量

环境变量

在整个Linux系统的bash中生效

TEST() {

local i=9

let i++

echo i

exit 0

}

i=1

TEST

echo i

  

扩展: 关于脚本执行的问题:

bash 的方式来执行 -- #!/bin/bash

bash所执行的脚本中定义的变量,在当前shell的子shell中;

全路径或者相对路径的方式来执行; -- 须有授权执行权限;

source 脚本文件 或者 . 脚本文件

source这种方式来执行脚本的时候,内部变量所定义的值是在当前shell中的;

6、函数递归

n的阶乘

n! = n(n-1)!

         $[$1*  $[ fac -1]]

 

fact(){

if [ $1 -lt 1 ];then

echo 1  //一定要写成1

else

i=$[$1*$(fact $[$1-1])]  //  n(n-1)

echo $i

fi

}

 

(n-1) = (n-1)(n-2)!

。。。

2!=2*1!

 

fac(){

$[fac -1 ]

}

fac 5

  

兔子数列,斐波那契数列

1 + 1 = 2

1+ 1 + 1 = 3

2 + 1 + 2  = 5

3 +  5 = 8

          =   n

1 1 2 3 5 8 13 21 34 ... n

$[$(fab $[$1-1])+$(fab $[$1-2])]

 

Fn = F(n-1) + F(n-2)

 

#!/bin/bash

#

fab(){

     if [ $1 -eq 1 ];then

        echo 1

    elif [ $1 -eq 2 ];then

         echo 1

     else

        echo $[$(fab $[$1-1])+$(fab $[$1-2])]

     fi

}

fab 7

  

  

原文地址:https://www.cnblogs.com/bishuyu/p/11398054.html