• 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  ]
  • 相关阅读:
    Swift 正式开源, 包括 Swift 核心库和包管理器
    Swift 3 新特性
    iOS10 CoreData新特性
    iOS各个版本的新特性介绍
    iOS WKWebView详解
    Swift XML解析库
    ios辅助功能之voiceover实战
    iOS 内存管理机制和循环引用处理方法
    Swift 关键字汇总
    Swift 自动布局框架-SnapKit
  • 原文地址:https://www.cnblogs.com/vincenshen/p/6589420.html
Copyright © 2020-2023  润新知