一、定义函数
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 当成一个变量值 |
![[leetcode-shell]192-统计词频](https://www.dyxmq.cn/wp-content/themes/begin/prune.php?src=https://www.dyxmq.cn/wp-content/uploads/2020/02/b3b4a-image6c552cb516ad2b7c.png&w=280&h=210&a=&zc=1)
![[leetcode-shell]195-第十行](https://www.dyxmq.cn/wp-content/static/thumbnail/PIC_20140218_145658_510.jpg)


评论