zoukankan      html  css  js  c++  java
  • 函数

    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
    

      

      

  • 相关阅读:
    SQL数据库一直显示正在还原
    jQuery获取display为none的隐藏元素的宽度和高度的解决方案
    火狐打开新标签页面不出现九宫格的设置
    【转】在C#中?,?:和??
    【转】JS字符(字母)与ASCII码转换方法
    如何为 .NET Core 安装本地化的 IntelliSense 文件
    compass typography 排版 常用排版方法[Sass和compass学习笔记]
    单元测试 逃不开的Done 与约定
    SASS+COMPASS 自适应 学习笔记
    compass tables 表格 表格常见样式[Sass和compass学习笔记]
  • 原文地址:https://www.cnblogs.com/bishuyu/p/11398054.html
Copyright © 2011-2022 走看看