函数

  函数可以将一个复杂的功能划分为若干模块,让程序结构更加清晰,代码重复利用率更高。Shell也支持函数。函数是Shell程序中执行特殊过程的部件,并可以在Shell脚本中重复调用。

1、函数的定义与调用

  Shell函数必须先定义后使用,函数定义的格式如下:

[function] 函数名()
{
    命令序列
    [return 返回值]
}

  其中关键字function可以缺省。函数返回值可以是显式增加return语句,如果不加该语句,则会将最后一条命令运行结果作为返回值。

  调用函数只需要给出函数名,不需要加括号,就像一般命令那样使用。函数的调用形式如下:

形式如下:

函数名 参数1 参数2 ...参数n

  参数是可选的。下面是一个简单的示例

#!/bin/bash
#定义函数
hello () {
	echo "hello world!"
	}
#调用函数
hello

  

 

 2、函数返回值

  Shell函数返回值只能是整数,一般用来表示函数执行成功与否。如果需要函数返回任意值,如字符串,可以采用以下几种方法。

1、使用全局变量

  Shell函数并没有提供全局变量,所有函数都与其所在的父脚本共享变量。这样就可以先定义一个变量,用来接收函数的计算结果,脚本在需要的地方访问这个变量来获得函数的返回值。下面给出一个简单的函数返回值示例:

#!/bin/bash 
#定义函数 
hello () { 
mystr='hello world!' 
} 
#调用函数 
hello 
#显示函数中赋值的变量 
echo $mystr

这个方法可以让函数返回多个值,只需要使用多个全局变量。

2、在函数中使用标准输出

  将一个Shell函数作为一个子程序调用(命令替换),将返回值写到子程序的标准输出,可以达到返回任意值的目的。下面是相关示例

#!/bin/bash
#定义函数
hello () {
#将一个值赋值给一个变量作为函数的返回值
	mystr='hello world!'
#显示字符串
	echo $mystr
	}
#调用函数
result=$(hello)
#显示函数中赋值的变量
echo $result

  

  

3、在函数中使用return返回整数值

  前面提到的$?是一个特殊的内部变量,可用于获取上一个命令的返回结果,可以直接通过函数return语句来接收返回值。下面为一个相关示例:

#!/bin/bash
addnum () {
	#将两个参数值的和赋给变量
	val=`expr $1 + $2`
	#使用return将变量值返回
	return $val
	}
	#调用函数
	addnum 4 5
	#获取函数返回值
	ret=$?
	echo "两个数的和为:$ret !"

  

3、函数参数

   在Shell中调用函数时可以向其传递参数。与脚本一样,在函数体内不也是通过$n的形式来获取参数的值,例如$1表示第一个参数,$2表示第二个参数,在函数体内部也是通过$n的形式来获取参数的值的,例如,$1表示第一个参数,$2表示第二个参数。

 

posted @ 2018-04-17 10:47  noticeable  阅读(207)  评论(0编辑  收藏  举报