Linux Shell

函数分为系统函数和自定义函数


自定义函数

格式:

[ function ] functionName () 
{
	命令
	[return 返回值]
}


函数内常量(和shell脚本介绍几本类似)

特殊变量

说明

${n}

n数字,获取参数,1-9可省略大括号,0获取当前脚本文件名称

$#

参数个数

$*

返回所有参数,使用双引号后将参数作为一个空格分隔的字符串

$@

返回所有参数

$$

当前脚本Shell进程号

$!

后台运行的最后一个进程ID

$?

最后执行命令的返回结果


调用时直接使用函数名和参数即可不需要写括号:

functionName param1 param2 ...


返回值处理

一般函数的放回值都是0,表示执行成功,所以返回值尽量不要有其他意义。

可以在外部声明一个全局变量,在函数内部改变达到效果。


举例:

无返回值

#!/bin/bash
function a_fun () {
	echo '$0='$0
	echo "参数个数:"$#
	
	i=0
	for var in ${@}
	do
		let i++;
		echo 第$i个参数:$var
	done
	
	echo 当前shell进程ID $$
}

a_fun a sd ff 12 3a

:<<!
参数:
	1. 输出类型 I 提示信息  S成功信息 E错误信息 W 警告信息
	2. 参数内容
!
function info_fun () {
	if [ $1 = "I" -o $1 = "i" ]
	then
			echoType="[\e[1;34mInfo\e[0m]"
	elif [ $1 = "S" -o $1 = "s" ]
	then
			echoType="[\e[1;32mSuccess\e[0m]"
	elif [ $1 = "E" -o $1 = "e" ]
	then
			echoType="[\e[1;31mError\e[0m]"
	elif [ $1 = "W" -o $1 = "w" ]
	then
			echoType="[\e[1;31mWarning\e[0m]"
	else
			echoType="[\e[1;31m"'???????'"\e[0m]"
	fi

	echo -e $echoType[`date "+%Y-%m-%d %H:%M:%S"`]$2;
}

info_fun I 提示信息
info_fun S 成功提示
info_fun E 错误信息
info_fun W 警告信息


有返回值,其实这属于现实声明返回值,系统设置默认返回0。(不推荐这样使用)

#!/bin/bash

function sum_fun () {
        x=$(($1+$2))
        echo '$x='$x    
        return $x
}

sum_fun 1 5
echo $?

其中 $? 即使调用方法的返回值。


转载请指明出处!http://www.miselehe.com/article/view/129