shell编程高级之函数

来源:互联网 发布:标致pp2000软件下载 编辑:程序博客网 时间:2024/05/21 22:32

shell编程高级之函数

  • 创建函数
    #第一种方式
    function name {
    commands
    }

    #第二种方式
    name(){
    commands
    }

    #使用函数
    #!/bin/bash
    #function
    # 此处fun1和{中间要有空格
    function fun1 {
    echo "i am fun1"
    }
    fun1
    fun2(){
    echo "i am fun2"
    }
    fun2

  • 函数返回值
    #默认退出状态码 $?
    #return命令
    #函数已结束就取返回值
    #退出状态码必须在0-255之间
    function fun1 {
    commands
    return 250
    }
    fun1
    echo $?

    #使用函数输出
    function fun1 {
    commands
    echo "holy shit"
    }
    val=`fun1`
    echo $val

  • 在函数中使用变量
    # 向函数中传递参数
    # 需在同一行
    #在函数中处理变量
    #在函数外定义的都是全局变量
    #在函数内部使用局部变量加local关键字
    # $0 函数名 $1 $2 $… 参数值 $# 计数
    fun5(){
    if [ $# -eq 0 ] || [ $# -gt 2 ]
    then
    echo -1
    elif [ $# -eq 1 ]
    then
    echo $[$1 * $1]
    else
    echo $[$1 * $2]
    fi
    }
    fun5 10
    fun5 10 11
    fun5 10 11 12

  • 数组变量和函数
    #传递给函数数组变量
    #在传递给函数前分解成单个值,传递后在函数内部组合成数组
    function testit {
    local newarray
    newarray=(`echo "$@"`)
    echo "The new array value is : ${newarray[*]}"
    }
    myarray=(1 2 3 4 5)
    echo "The original array value is : ${myarray[*]}"
    testit ${myarray[*]}

    #让函数返回数组变量
    rtarray(){
    local originalArr
    local newArr
    local elements
    local i
    originalArr=(`echo "$@"`)
    newArr=(`echo "$@"`)
    elements=$[ $#-1 ]
    for(( i = 0;i <= $elements;i++ ))
    {
    newArr[$i]=$[${originalArr[$i]}*2]
    }
    echo ${newArr[*]}
    }
    myarr=(1 2 3 4 5)
    echo "The original array value is :${myarr[*]}"
    val1=`rtarray ${myarr[*]} `
    echo "The new array value is : ${val1[*]}"
  • 函数递归
    #计算阶乘
    factorial(){
    if [ $1 -eq 1 ]
    then
    echo 1
    else
    local tmp=$[$1-1]
    local result=`factorial $tmp`
    echo $[ $result * $1 ]
    fi
    }
    read -p "Enter The Value:" value
    result=`factorial $value`
    echo "The factorial of the $value is $result"
  • 创建库
    #引入 . ./ku.sh .号为source的快捷别名.称作点操作符
    . ./ku.sh
    result=`addem 10 15`
    echo "The result is $result"
1 0