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

包含文件不需要可执行权限。

results matching ""

    No results matching ""