zoukankan      html  css  js  c++  java
  • Shell入门-Shell函数

    Shell函数

    本篇内容如下:

    • Shell函数的定义方法
    • Shell函数的执行方法

    函数写法

    标准写法:

    function 函数名(){
    	指令...
    	return n
    }
    

    简化写法:

    function 函数名{
    	指令...
    	return n
    }
    

    简化写法:

    函数名(){
    	指令...
    	return n
    }
    

    函数执行

    Shell的函数分为最基本的函数和可以传参的函数两种,其执行方式分别说明如下。

    1. 执行不带参数的函数时,直接输入函数名即可(注意不带小括号)

      • 在Shell函数里面,return命令的功能与exit类似,return的作用是退出函数,而exit是退出脚本文件。
      • return语句会返回一个退出值(即返回值)给调用函数的当前程序,而exit会返回一个退出值(即返回值)给执行程序的当前Shell。
      • 如果将函数存放在独立的文件中,被脚本加载使用时,需要使用source或“. ”来加载。
      • 在函数内一般使用local定义局部变量,这些变量离开函数后就会消失。
    2. 带参数的函数执行方法,格式如下

      函数名 参数1 参数2
      
      • Shell的位置参数($1、$2…、$#$*$?$@)都可以作为函数的参数来使用。
      • 此时父脚本的参数临时地被函数参数所掩盖或隐藏
      • $0比较特殊,它仍然是父脚本的名称
      • 当函数执行完成时,原来的命令行脚本的参数即可恢复。
      • 函数的参数变量是在函数体里面定义的

    实践

    一个简单的函数

    [root@localhost shell]# cat 8_1.sh 
    #!/bin/bash
    #***********************************************
    #Author:        luotianhao
    #Mail:          tianhao.luo@hand-china.com
    #Version:       1.0
    #Date:          2021-03-10
    #FileName:      8_1.sh
    #Description:   This is a test script.
    #***********************************************
    oldboy(){
      echo "i am oldboy"
    }
    
    function oldgirl(){
      echo "i am oldgirl"
    }
    
    oldboy
    
    oldgirl
    [root@localhost shell]# sh 8_1.sh 
    i am oldboy
    i am oldgirl
    

    URL检测脚本:

    将函数的传参转换成脚本文件命令行传参,判断任意指定的URL是否存在异常。

    1.实现脚本传参,检查url是否正常

    [root@localhost shell]# cat 8_5.sh 
    #!/bin/bash
    #***********************************************
    #Author:        luotianhao
    #Mail:          tianhao.luo@hand-china.com
    #Version:       1.0
    #Date:          2021-03-10
    #FileName:      8_5.sh
    #Description:   This is a test script.
    #***********************************************
    
    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
    

    2.将上述检测的功能写成函数,并将函数传参转换成脚本命令行传参,判断任意指定的URL是否存在异常。

    [root@localhost shell]# cat 8_5_1.sh 
    #!/bin/bash
    #***********************************************
    #Author:        luotianhao
    #Mail:          tianhao.luo@hand-china.com
    #Version:       1.0
    #Date:          2021-03-10
    #FileName:      8_5_1.sh
    #Description:   This is a test script.
    #***********************************************
    function usage(){
      echo $"usage:$0 url"
      exit 1
    }
    
    function check_url(){
      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 main(){
      if [ $# -ne 1 ]
      then
          usage
      fi
      check_url $1
    }
    
    #<===这里的$*就是吧命令行接收的所有参数作为函数参数传给函数内部
    main $*
    [root@localhost shell]# sh 8_5_1.sh www.baidu.com
    www.baidu.com is no
    [root@localhost shell]# sh 8_5_1.sh
    usage:8_5_1.sh url
    [root@localhost shell]# 
    
  • 相关阅读:
    TSql随机获取一条
    Delphi 删除目录
    Sqlserver 分组累加(处理一分一段表)
    当上班没事做的时候,做什么?
    网站中图片滚动效果的实现方法集锦
    Gridview用法大全。
    开发常见问题总结(二)
    仿京东,qq相册效果的前台和后台实现的开发总结。
    分享一款不错多个图片上传工具
    开发常见问题总结(三)
  • 原文地址:https://www.cnblogs.com/tianhao-luo/p/14520709.html
Copyright © 2011-2022 走看看