Shell脚本中也提供了函数的功能,一个函数就是一个子程序,用于实现一系列操作的代码块。Shell中函数的书写语法有两种格式,分别是:
function
。如下:function 函数名()
{
command ...
}
函数名 ()
{
command ...
}
虽然上面两种方式都可以用来定义一个函数,但是更加推荐用第二种方式,具有更好的可移植性。当然,上面的左括号(“{
”)可以和函数名写在同一行中。拿第二种方式来说,可以书写为下面这样:
函数名 () {
command ...
}
函数名和括号之间可以有空格,也可以没有空格;括号和“
{
”之间可以有空格,也可以没有空格。
Shell脚本支持函数的嵌套定义,即一个函数内部再嵌套另一个函数,如下所示:
#!/bin/sh
echo "start ----------"
f1 () {
echo "f1 -->"
f2 () {
echo "f2 -->"
}
f2
}
f1
同样,如果要使用函数f2
,则必须在函数f1
中显示调用f2
。其打印结果如下图所示:
函数定义必须在第一次调用该函数之前完成,如下示例:
#!/bin/sh
# 调用函数test, 但是test函数还没有定义.
test
test() {
echo "test ..."
}
我在Linux version 3.10.0-1160.66.1.el7.x86_64 (root@localhost.localdomain) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) )
环境上面执行上面的代码,没有错误提示信息,应该和环境有关系。按理说是会报错的。
Shell脚本中调用函数方式简单,直接写函数名即可完成对应函数的调用。
Shell脚本中的函数没有形参,但是它可以处理传递给它的参数,并且能够返回它的『退出状态码』 给脚本。
return
终止一个函数,与exit
命令一样,return
同样允许带一个整型参数,这个整数将作为函数的“退出状态码”返回给调用此函数的脚本,且这个整数也被赋值给变量$?
。