开发大型的shell程序少不了函数,它能够使用程序的代码的复用程度高,开发简单化,模块化,团队合作性强等。
函数定义格式:
functionname ()
{
语句组
}
函数使用:
1、调用函数之前,必须先定义函数。
2、函数的参数的传递:functionname para1 para2 ….
3、在函数内部参数的读取:$* $@ $# $1 $2 $3 $4 $5 …
不包括 $0 ,在函数内部可以引用 $0参数。因此,在函数内部就不能引用到程序的参数。当函数执行完之后,这些值会被恢复。
4、函数的返回值:可能使用return命令返回数字值;要返回字符串值,可以字符串保存在一个全局性的变量中,该变量在函数结束后能被外界使用;如果没有使用return命令,则函数返回值是函数中最后执行的一条命令的退出状态码。
5、变量使用:函数内部声明的变量默认为全局变量,使用local关键字声明的变量为局部变量(如 local var=“var”)。如果局部变量与全局变量同名,则在函数内部局部变量覆盖全局变量。
6、返回值的获取,当执行完函数后,函数的返回值被存放在$?中,可以通过它来获取函数的返回值。
#!/bin/sh
#This is a example for testing the return value of function
fun()
{
return 10
}
fun
echo $?
exit 0


lyq617617 于 2008-07-09 10:30:39发表:
多谢了哥们,学了这些天linux shell,一直在困惑,怎么调用带参的函数,终于解决了,学习了,也正好把我的程序代码贴出来,有需要的朋友可以结合上面的和实例学习一下:
1.第一个脚本 testadd(包含加法函数的脚本)
#! /bin/bash
addition(){
declare -i sum
sum=$1+$2
return $sum
}
2.第二个脚本 add(在此脚本中调用上面脚本中的加法函数addtion())
#! /bin/bash
. testadd
addition 10 20
echo $?
执行结果如下:
# add
30