• 13 函数


    传递参数


    在bash shell 编程中, 向函数传递的参数仍然是位置参数的方式来传递的, 而不能传递数组等其他形式的变量, 这与C语言
    或JAVA语言的函数传递是不同的.

    #!/bin/bash

    half()
    {
    let "n = $1"
    let "n = n/2"
    echo "In function half() n is $n"
    }


    #函数调用
    let "m = $1"
    echo "Before the function half() is called, m is $m"
    half $m # 注意, 函数执行时, 不带()
    echo "After the function half() is called, m is $m"

    函数返回值


    有时需要脚本执行完成后返回特定的值来完成脚本的后继操作, 在linux shell编程中, 函数是通过 return 返回其退出状态, 0表示无错误, 1表示有错误
    在脚本中可以有选择的使用 return 语句.
    看来, 返回值, 只是一个标记, 跟脚本返回值一样.

    函数调用


    首先, 函数之间可以调用, 后边的可以调用自己(递归调用)或前边的函数
    比如有多个函数, 顺序执行函数
    show_week
    show_number
    show_square

    在函数内部调用其他函数
    choice()
    {
    case $char in
    s)
    square;;
    c)
    cube;;
    p)
    power;;
    *)
    echo "What you input is wrong!";;
    esac
    }

    局部变量和全局变量


    首先, 局部变量定义, 另外, 局部变量可以和全局变量同名, 并且在函数内, 全局变量会被局部变量隐藏(跟C一样)
    use_local_var()
    {
    local text="local variable"
    }
    另外, 如果你在函数外部定义了一个变量, 在函数内部没有使用 local 来声明跟外部同名的变量, 那么, 这两个变量实际上是一个地址,
    如果你修改了这个变量在函数内部, 那么也会直接影响着函数外边的结果, 例如:

    #!/bin/bash
    count=1
    echo "$count" # 结果是1

    int_count()
    {
    count=2
    echo "$count2" # 结果是2
    }

    echo "$count" # 结果是2, 注意这里, 外部变量的结果已经变了

  • 相关阅读:
    算法竞赛入门经典训练指南——UVA 11300 preading the Wealth
    hiho一下 第148周
    ajax总结及案例
    Spring事务
    Struts2拦截器介绍
    Struts2的拦截器----Dog实例
    Struts2文件的下载
    Struts2文件的上传
    Struts2类型转换
    Struts2 属性驱动、模型驱动、异常机制
  • 原文地址:https://www.cnblogs.com/moveofgod/p/4656718.html
Copyright © 2020-2023  润新知