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

    语法:

    function 函数名(){

      指令...

      return n

    }

    执行函数:

    1、执行shell函数时,直接使用 函数名, 而不需要后面的括号。

    2、函数的定义必须在执行函数名以前被定义或加载。

    3、如果将函数存放在独立的文件中,被脚本加载使用时,需要使用 source或者"." 来加载。

    4、在函数内部一般使用local定义局部变量,这些变量离开函数后就会消失。

    实例:

    使用if编写的url check脚本

    #!/bin/bash
    
    if [ $# -ne 1 ];then
            echo $"usage:$0 url"
            exit 1
    fi
    
    wget --spider -q -o /dev/null --tries=1 -T 5 $1
    
    if [ $? -eq 0 ];then
            echo "$1 is yes."
    else
            echo "$1 is no."
    fi

    转换为使用function编写

    #!/bin/bash
    
    function usage(){
            echo $"usage: $0 url"
            exit 1
    }
    
    function check_url(){
            wget --spider -q -o /dev/null --tries=1 -T 3 $1
            if [ $? -eq 0 ];then
                    echo "$1 is yes."
            else
                    echo "$1 is no."
            fi
    }
    
    function main(){
            if [ $# -ne 1 ];then
                    usage
            fi
            check_url $1
    }
    main $1

    引入 /etc/init.d/functions 中的action 使脚本更加规范

    #!/bin/bash
    . /etc/init.d/functions
    
    function usage(){
            echo $"usage: $0 url"
            exit 1
    }
    
    function check_url(){
            wget --spider -q -o /dev/null --tries=1 -T 3 $1
            if [ $? -eq 0 ];then
                    action "$1 is yes." /bin/true
            else
                    action "$1 is no."  /bin/false
            fi
    }
    
    function main(){
            if [ $# -ne 1 ];then
                    usage
            fi
            check_url $1
    }
    main $1

    执行结果:

    [root@rhel6 script]# bash func33.py http://1.1.1.1
    http://1.1.1.1 is no.                                      [FAILED]
    [root@rhel6 script]# bash func33.py http://127.0.0.1
    http://127.0.0.1 is yes.                                   [  OK  ]
  • 相关阅读:
    【leetcode】7. 反转整数
    【leetcode】496. 下一个更大元素 I
    【leetcode】389. 找不同
    Linux驱动模型解析bus之platform bus
    shell 和进程
    递归调用在循环体内: 把循环展开, 这种情况是先循环再递归
    javascript函数柯里化以及柯里化带来的好处
    Maven测试篇
    关于ECharts Java类库的一个jquery插件
    javascript原型链继承
  • 原文地址:https://www.cnblogs.com/vincenshen/p/6589420.html
Copyright © 2011-2022 走看看