函数
函数就是一个代码块,你可以在代码块中定义任意代码,然后在脚本中调用,使用函数名即可调用函数中定义的代码块。
语法
[function] 函数名()
{
# 函数代码块
}
函数名可以任意指定,但推荐使用驼峰命名法。
[]中的内容是可选的,可以省略。函数一定要写在调用函数之前,不然会报错。建议将函数写在脚本开头。
基本用法
#!/bin/bash
# 定义函数
hello() {
echo "Hello, World!"
}
hello # 调用函数
运行效果
[root@lwz1 ~]# sh fun.sh
Hello, World!
数值求和,并使用return返回值
#!/bin/bash
# 定义函数
fun()
{
read -p "请输入一个数字:" num1
read -p "请输入另一个数字:" num2
return $(($num1 + $num2))
}
fun
echo "两个数字的和是:$?"
$?用于调用return返回的值。
$(($num1 + $num2))也可以使用$[$num1 + $num2]表示。
运行效果
[root@lwz1 ~]# sh fun1.sh
请输入一个数字:3
请输入另一个数字:3
两个数字的和是:6
函数参数
#!/bin/bash
# 定义函数
fun()
{
echo "第一个参数是:$1"
echo "第二个参数是:$2"
echo "第三个参数是:$3"
echo "第十个参数是: $10"
echo "第十个参数是: ${10}"
echo "第十一个参数是: ${11}"
echo "参数个数是: $#"
echo "以一个单字符输出所有参数:$*"
}
fun 1 2 3 4 5 6 7 8 9 34 789
$10不能获取第十个参数,当参数个数n>=10时,需要使用${n}来获取。函数参数的个数是不固定的,可以接收任意个数的参数。
运行效果
[root@lwz1 ~]# sh fun1.sh
第一个参数是:1
第二个参数是:2
第三个参数是:3
第十个参数是: 10
第十个参数是: 34
第十一个参数是: 789
参数个数是: 11
以一个单字符输出所有参数:1 2 3 4 5 6 7 8 9 34 789
另外还有几个特殊字符用来处理参数:
| 参数处理 | 说明 |
|---|---|
$# |
传递到脚本的参数个数 |
$* |
以一个单字符串显示所有向脚本传递的参数 |
$$ |
脚本运行的当前进程ID号 |
$! |
后台运行的最后一个进程的ID号 |
$@ |
与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- |
显示Shell使用的当前选项,与set命令功能相同。 |
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |