• shell编程之函数


    shell编程之函数

    函数的作用就是将程序里多次被调用的相同的代码组合起来(函数体),为其取个名字(函数名),其它所有想重复调用这部分代码的地方都只需要调用这个名字
    函数的优势:
    把相同的程序定义成函数,可以减少程序的代码量,提升开发效量
    增加程序的可读、易读性,提升管理效率
    可以实现程序功能模块化,使程序具备通用性(可移植性)
    

    1.shell函数语法

    方法一:
    function 函数名() {
        指令集...
        return n
    }
    方法二:
    function 函数名 {
        指令集...
        return n
    }
    方法三:
    函数名() { 
        指令集...
        return n
    }
    

    1.1 函数的执行

    1.不带参数的函数执行时,直接输入函数名即可(不带小括号):格式如下:函数名
    有关执行函数的重要说明:
    执行函数时,函数名前的function和函数后的小括号都不要带
    函数的定义必须要在执行前面定前或加载
    shell执行系统中各种程序的顺序为:系统别名-函数-系统命令-可执行文件
    函数执行时,会和调用它的脚本共用变量,可以为函数设定局变变量以及特殊位置参数
    在shell函数里,return命令功能与exit类似,作用是退出函数,而exit是退出脚本文件
    return语句会返回一个退出值(返回值)给调用函数的当前程序,而exit会返回一个退出值给执行程序的当前shell
    如果函数存放在独立的文件中,被脚本加载使用时,需要使用source或.来加载
    在函数内一般使用local定义局部变量,这些变量离开函数后即消失
    2.带参数函数的执行方法,格式如下:函数名 参数1 参数2
    函数后接参数说明:
    shell的位置参数$1、$2....$#、$*、$?、$@都可以作为函数的参数使用
    此时父脚本的参数临时的被函数参数所掩盖或隐藏
    $0比较特殊,它仍是父脚本的名称
    当函数执行完成时,原来的命令脚本参数即恢复
    函数的参数变量是在函数体里面定义的
    

    1.2 简单函数执行

    oldboy() {
       echo "I am oldboy"
    }
    oldboy
    function oldgirl() {
     echo "I am oldgirl"
    }  
    oldgirl
    function test {
      echo "this is test"
    }
    test
    

    1.3 带参数函数执行

    [root@ci-node1 scripts]# cat 12.sh.1 
    #!/bin/bash
    ##############################################################
    # File Name: 12.sh
    # Version: V1.0
    # Author: liu
    # Organization: 
    # Created Time : 2019-04-12 10:36:48
    # Description:
    ##############################################################
    oldboy() {
       echo "I am $1"
    }
    oldboy $1
    ps:从接收脚本参数,然后将收到参数传给函数
    

    2.函数案例

    2.1 通过脚本传参的方式,检查Web 网站URL是否正常

    使用命令访问url命令:

    wget命令:
    --spider:模拟爬虫
    -q:安静访问
    -o /dev/null:不输出
    -T --timeout 超时时间
    -t --tries 重试次数
    wget --spider -T 5 -q -o /dev/null -t 2 www.baidu.com
    curl命令:
    -I 看响应头
    -s 安静的
    -o /dev/null 不输出
    -w %{http_code} 返回状态码,200
    curl -I -m 5 -s -w "%{http_code}
    " -o /dev/null  www.baidu.com
    

    案例:

    [root@ci-node1 scripts]# cat 13.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 13.sh
    # Version: V1.0
    # Author: liu
    # Organization: 
    # Created Time : 2019-04-12 18:07:02
    # Description:
    ##############################################################
    chekurl() {
       wget --spider -o /dev/null -T 5 $1
       if [ $? -ne 0 ]
       then
           echo "网站url不正常!"
       else
           echo "网站正常"
        fi
    }
    usage() {
        echo "Usage:$0 url"
    }
    main() {
       if [ $# -ne 1 ]
       then
           usage
       else
           chekurl $1
       fi
    
    }
    main $*
    
  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/10748222.html
Copyright © 2020-2023  润新知