fun () { echo "This is a function"; echo; }
# ^ ^
然而,在这种情况下,函数里的最后一个命令必须跟有一个分号。
fun () { echo "This is a function"; echo } # Error!
# ^
fun2 () { echo "Even a single-command function? Yes!"; }
# ^
只需要引用函数名字就可以调用或者触发函数。一个函数调用相当于一个命令。
例子 24-1. 简单的函数
#!/bin/bash
# ex59.sh: 练习函数(简单的).
JUST_A_SECOND=1
funky ()
{ # 这是一个简单的函数
echo "This is a funky function."
echo "Now exiting funky function."
} # 函数必须在调用前声明.
fun ()
{ # 一个稍微复杂点的函数.
i=0
REPEATS=30
echo
echo "And now the fun really begins."
echo
sleep $JUST_A_SECOND # Hey, 等一秒钟!
while [ $i -lt $REPEATS ]
do
echo "----------FUNCTIONS---------->"
echo "<------------ARE-------------"
echo "<------------FUN------------>"
echo
let "i+=1"
done
}
# 现在,调用这些函数.
funky
fun
exit $?
函数定义必须在第一次函数调用之前。没有声明函数的方法,比如像C语言中一样。
f1
# 将会产生一个错误消息,因为“f1”函数还没有定义。
declare -f f1 # 这样也不会有帮助。
f1 # 仍然会产生一个错误消息。
# 然而...
f1 () {
echo "Calling function \"f2\" from within function \"f1\"."
f2
}
f2 () {
echo "Function \"f2\"."
}
f1 # 在此之前,事实上函数“f2”是没有被调用的,
#+ 尽管在它定义之前被引用了。
# 这是可以的。
# 感谢, S.C.