函数

参考:Shell 函数

定义

格式如下:

[function] funname()
{
    action;
    [return int;]
}
  • 关键字function可选
  • 返回语句可选,如果不加,以最后一条命令运行结果作为返回值

示例1

$ cat test.sh 
#!/bin/bash

func()
{
    echo "this is func"
}

function compute()
{
    return 3
}

func
compute

echo "compute's result is $?"

定义两个函数funccompute,使用$?获取最后命令(即函数compute)的退出状态

$ bash test.sh 
this is func
compute's result is 3

参数

对于函数参数的传递和获取,其使用方式和命令行参数一致。通过$n获取第n个参数值

$1
$2
$3
...
${10}
${11}

并使用以下特殊符号获取传递到函数的信息

示例2

$ cat test.sh 
#!/bin/bash

func()
{
    echo "command line parameters: $@"
}

function compute()
{
    NUM=0
    for i in $@
    do
        NUM=`expr ${NUM} + ${i}`
    done
    return ${NUM}
}

func "$@"
compute 2 3 4 5

echo "compute's result is $?"

函数func打印所有命令行参数;函数compute计算输入参数之和并返回结果。结果如下:

$ bash test.sh zj zzjj
command line parameters: zj zzjj
compute's result is 14