一、定义函数
shell可以使用function
关键字定义函数:
1 2 3 4 |
function xxx() { ... } |
也可以可以省略关键字function
:
1 2 3 4 |
xxx() { ... } |
调用函数时直接使用函数名就可以了,注意的是函数的定义必须在使用之前。
1 2 3 4 5 6 7 |
#! /bin/bash mFun(){ echo "HelloWorld" } mFun |
1 2 3 |
> chmod +x func.sh > ./func.sh HelloWorld |
二、函数的参数和返回值
函数内获取参数的方法和shell获取命令行参数的方式一致:
参数处理 | 说明 |
---|---|
$n |
n 是一个整数,表示第n个参数 |
$# |
传递到脚本的参数个数 |
$* |
以一个单字符串显示所有向脚本传递的参数 |
$$ |
脚本运行的当前进程ID号 |
$! |
后台运行的最后一个进程的ID号 |
$@ |
与$*相同,但是使用时加引号,并在引号中返回每个参数 |
$- |
显示Shell使用的当前选项,与set命令功能相同 |
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误 |
传入参数时在函数后加上相应的参数即可,多个参数以空格隔开,例如:mFunc 1 2
。
参数只能以空格分开,不能是逗号或其他,函数体内通过$1
、$2
和$n
获取各个参数。
函数返回值只能是整形数字,取值范围0-255
。形式可以是1
,也可以是"1"
。
函数外通过$?
获取返回值:
1 2 3 4 5 6 7 8 9 10 11 12 |
#! /bin/bash mFun(){ echo "Hello ${1}" echo $2 return 99 } mFun 1 2 echo $? mFun 1,2 # 函数调用会和预期不一样 |
输出:
1 2 3 4 5 |
> ./func.sh Hello 1 2 99 Hello 1,2 # shell把1,2当成一个变量值 |
评论