Shell函数是一种可以被多次调用的代码块,它允许用户封装一系列命令以便重复使用。Shell脚本中的函数对于组织和重用代码非常有用。
1.定义函数
在Bash中,可以通过以下几种方式来定义一个函数:
# 使用 function 关键字
function my_function {echo "Hello, World!"
}# 直接以函数名开始,后面跟着一对花括号{}
my_function() {echo "Hello, World!"
}# 函数的return语句用于返回一个整数退出状态码,如果不加return语句,将以最后一条命令运行结果。这个值通常用来表示函数执行的成功或失败状态。标准惯例是0表示成功,非零值表示某种错误或异常情况。需要注意的是,return语句只能返回一个0到255之间的整数。
2.调用函数
一旦定义了函数,就可以像调用任何其他命令一样调用它:
my_function
3.参数传递
可以在调用函数时向其传递参数,这些参数可以通过 $1, $2, ... 等形式访问,其中 $1 对应第一个参数,$2 对应第二个参数等。
例如,定义一个接受两个参数并打印它们的函数:
# 定义
print_args() {echo "First argument: $1"echo "Second argument: $2"# 注意 $10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
}# 调用
print_args arg1 arg2# 输出
First argument: arg1
Second argument: arg2
另外,还有几个特殊字符用来处理参数:
| 参数处理 | 说明 |
|---|---|
| $# | 传递到脚本或函数的参数个数 |
| $* | 以一个单字符串显示所有向脚本传递的参数 |
| $$ | 脚本运行的当前进程ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
| $- | 显示Shell使用的当前选项,与set命令功能相同。 |
| $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
