zoukankan      html  css  js  c++  java
  • 17 shell脚本--008函数

    vim 中多行注释:

      进入视图模式,

      .,$s/^/#/

    练习:

    #!/bin/bash
    #
    
    start1(){
            if [ -e /var/lock/subsys/testd_name ];then
                    echo "服务已启动"
            else
                    touch /var/lock/subsys/testd_name
                    echo "服务启动成功"
            fi
    }
    
    stop1(){
            if [  -e /var/lock/subsys/testd_name ];then
                    rm -f /var/lock/subsys/testd_name
            ;;
                    echo "服务关闭成功"
            else
                    echo "服务已经关闭"
            fi
    }
    
    status1(){
            if [ -e /var/lock/subsys/testd_name ];then
                    echo "文件存在"
            else
                    "文件不存在"
            fi
    }
    
    ugage1(){
            echo "Usage:please input {start|stop|restart|status}"
    }
    
    
    case $1 in 
    start)
            start1()
            ;;
    stop)
            stop1()
            ;;
    restart)
            restart1()
            ;;
    status)
            status1()
            ;;
    *)
            ugage1()
            ;;
    esac

    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

  • 相关阅读:
    论信息系统项目的范围管理
    Windows服务/Linux守护创建及安装
    C#开源网络通信库PESocketde的使用
    Unity本地持久化类PlayerPrefs使用详解
    记录一个闪烁,跳动,光圈的动画
    一、Linux驱动学习-了解系统
    用c#自己实现一个简单的JSON解析器
    highcharts的yAxis标题过长 分行显示
    Mysql binlog恢复数据
    Xamarin.Forms实例旅行日志
  • 原文地址:https://www.cnblogs.com/wx00/p/11376123.html
Copyright © 2011-2022 走看看