zoukankan      html  css  js  c++  java
  • shell函数

    1、函数介绍function
        为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。
        且,这个功能在后面的代码中,会重复调用;  
    2、函数的语法格式
    (1)函数的写法格式:
          function check_cpu {
              cat /proc/cpuinfo
          }
          ls /etc/
          check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】

    (2)*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、函数中的变量
    (1)本地变量
            local 变量名=xxx
            本地变量只在本函数内部生效

    (2)局部变量
            脚本内部的变量
    (3)环境变量
            在整个Linux系统的bash中生效 

    TEST() {
           local i=9
           let i++
           echo i
           exit 0
    }
    i=1
    TEST
    echo i

      (4) 关于脚本执行的问题:
          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

        兔子数列,斐波那契数列 

    #!/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
  • 相关阅读:
    struts2文件下载的编写步骤(文件导出)和输入流转换的方法
    spring的applicationContext.xml配置SessionFactory抛异常
    引用第三方高德地图接口---使用js脚本进行开发地图定位的步骤
    登陆时不同浏览器获取session存在的相关疑问?
    统一的异常处理和自定义的全局异常处理器的配置使用
    国际化的工具类ognl utils
    oracle中decode的用法(例子)
    PLSQL连接本机oracle 11g 64 数据库的步骤
    处理oracle 报ORA-12505 信息:listener does not currently know of SID given in connect descriptor...
    spring容器的配置和springmvc的配置
  • 原文地址:https://www.cnblogs.com/www-k/p/11379500.html
Copyright © 2011-2022 走看看