zoukankan      html  css  js  c++  java
  • Shell中的函数

    一、在脚本中定义函数

    与变量一样,在使用函数之前应该对函数进行定义。与其他编程类语言相比,由于没有数据类型的概念,因此也不必定义函数的类型。

    (1)在脚本中可以使用以下方式定义函数:

    function_name()
    {
        语句1
        语句2
        ...
    }

    (2)有时为了便于阅读,也可以使用以下方式定义函数:

    function function_name()
    {
        语句1
        语句2
        ...
    }

    在上面这种方式中,使用了关键字function定义函数。这种方式有助于提高代码的可读性,因此建议使用这种方式定义函数。

    【函数的命名约定】

    • 为了区别变量,建议所有函数名都有小写字母和下划线组成,并以字母开头。
    • 不要使用命令作为函数名称。
    • 不要在函数名中使用特殊字符。
    • 函数名应该尽量体现其功能。

    除此之外,尽量不要在函数名中使用数字、有特殊意义的字符(例如true、false、return)、标点符号等。

    二、在脚本中使用函数

    在脚本中定义了函数后,下一步就是在脚本中调用函数执行特定的功能,可以在脚本中使用函数名直接调用函数。

    函数定义和调用的简单示例:

    [root@localhost shell]# cat func_exam.sh 
    #!/bin/bash
    
    #This is a example script.
    #2013/12/17
    
    hello()
    {
            echo "Now is the function hello."
            echo "Hello!"
    }
    
    function hi()
    {
            echo "Now si the function hi."
            echo "Hi!"
    }
    
    echo "Now call the function hello."
    hello
    echo "Now call the function hi."
    hi
    [root@localhost shell]# ./func_exam.sh 
    Now call the function hello.
    Now is the function hello.
    Hello!
    Now call the function hi.
    Now si the function hi.
    Hi!

    三、向函数传递参数和返回值

    (1)在函数中获取传递的参数时,可以像脚本获取参数那样,使用位置变量$1、$2、$3等。

    示例:

    [root@localhost shell]# cat func_get_param.sh 
    #!/bin/bash
    
    #This is a example script.
    #2013/12/17
    
    function A()
    {
            echo `expr $1 + $2`
    }
    
    D=`A 100 300`
    
    echo "D="$D
    [root@localhost shell]# ./func_get_param.sh 
    D=400

    (2)返回多个值的示例:

    [root@localhost shell]# cat func_get_param.sh 
    #!/bin/bash
    
    #This is a example script.
    #2013/12/17
    
    function A()
    {
            sum=`expr $1 + $2`
            sub=`expr $1 - $2`
    }
    
    A 300 100
    
    echo "sum="$sum
    echo "sub="$sub
    [root@localhost shell]# ./func_get_param.sh 
    sum=400
    sub=200

    上面的示例中,函数的返回值是通过变量来完成的,这种方式是借助变量的作用域在脚本中的全局性。

    (3)使用预定义变量$?捕获函数是否成功执行:

    [root@localhost shell]# cat func_ok.sh
    #!/bin/bash
    
    #This is a example script.
    #2013/12/17
    
    function A()
    {
            echo `expr $1 + $2`
    }
    
    D=`A 100 300`
    
    if [ $? = 0 ] 
    then
            echo "Function succeeds!"
            echo "D="$D
    else
            echo "Function fails."
    fi
    [root@localhost shell]# ./func_ok.sh 
    Function succeeds!
    D=400

    (4)使用if语句判断函数执行结果时,也可简写为:

    if D=`A 100 300`
    then
    ......

    四、返回函数执行状态

    在脚本中调用了函数之后,函数会执行函数结构体中的语句,完成后系统会根据函数中的最后一个语句的执行状态,自动返回函数的执行状态信息。但有时函数中的关键语句不是最后一句,这时就需要手动返回函数的执行状态。

    要手动返回函数的执行状态,可以在函数最后使用return语句。return的使用方法和取值如下:

    return:将函数最后一条命令的执行状态作为其状态信息返回。

    return 0:返回函数成功执行信息。

    return 1:返回函数错误的信息。

    使用以上命令设置函数返回状态时,当脚本执行到return语句时,无论还有多少语句没有执行,脚本都会立即设置函数执行状态并返回。

  • 相关阅读:
    android 入门-工程属性介绍
    android 入门-android属性介绍
    android 入门-布局
    android 入门-动画与容器
    android 入门- 词汇
    android 入门-引用库项目
    android 入门-防微信拍摄视频 按钮事件处理
    WPF Adorner
    c# Quartz.net的简单封装
    WPF 触摸屏小键盘样式
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3478578.html
Copyright © 2011-2022 走看看