9.6 函数与文件包含
Shell 允许定义函数并在脚本中重用,同时也支持包含其他脚本文件。
定义和调用函数
[ function ] name [()] {
actions;
[return int;]
}
- 可以使用
function fun()或fun()定义。 - 函数可以通过
return返回数字,默认返回最后一条命令的退出状态。 - 所有函数必须在使用前定义。
示例:
#!/bin/bash
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
返回值
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
read aNum
read anotherNum
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
函数参数
调用函数时可以向其传入参数,函数内部通过 $1、$2 等访问。
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 ${10} !"
echo "参数总数有 $# 个!"
echo "所有参数:$*"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
特殊变量:
| 符号 | 含义 |
|---|---|
| $# | 参数个数 |
| $* | 所有参数作为单字符串 |
| $@ | 所有参数,带引号可保留分隔 |
| $$ | 当前脚本进程 ID |
| $! | 后台最后一个进程 ID |
| $- | 当前 shell 选项 |
| $? | 最后命令退出状态 |
文件包含
与其他语言类似,Shell 可以包含外部脚本文件,使代码可复用。
语法:
. filename # 或 source filename
示例:
test1.sh:
#!/bin/bash
url="http://www.runoob.com"
test2.sh:
#!/bin/bash
. ./test1.sh
# 或 source ./test1.sh
echo "菜鸟教程官网地址:$url"
运行 test2.sh 会输出:
菜鸟教程官网地址:http://www.runoob.com
包含文件不需要可执行权限。