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  ]
  • 相关阅读:
    poj 1037 三维dp
    poj 3311 floyd+dfs或状态压缩dp 两种方法
    HDU 5761 物理题
    HDU 5752
    Codeforces Round #328 (Div. 2) C 数学
    cakephp中sql查询大于
    cakephp获取最后一条sql语句
    iconv()错误
    sql时间戳转日期格式
    接口报错
  • 原文地址:https://www.cnblogs.com/vincenshen/p/6589420.html
Copyright © 2011-2022 走看看