Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191907
  • 博文数量: 53
  • 博客积分: 2015
  • 博客等级: 上尉
  • 技术积分: 546
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-04 23:28
文章分类

全部博文(53)

文章存档

2012年(4)

2011年(8)

2010年(19)

2009年(22)

我的朋友

分类:

2011-01-12 20:16:37

1.  创建函数(两种方式)

function name {

commands

name() {

commands

}

例:

#!/bin/bash

function func1 {

Echo “This is an example of a function”

}

func1

 

2.  函数定义必须要在调用它之前,否则会提示commands not found

3.  函数名唯一,否则新定义的函数将替代原先的定义

例:

#!/bin/bash

function func1 {

Echo “this is the first definition”

}

func1

function func1 {

Echo “this is a repeat of the same function name”

}

func1

4.  可以使用return设定函数返回值

例:

#!/bin/bash

Function db1 {

Read –p “enter a value: “ value

Echo “doubing the value”

Return $[ $value * 2 ]

}

db1

echo “the new value is $?”

两点注意:

(1)     当函数执行完成时需要立即读取返回值(以防$?值被其他指令替换),除非将函数发返回值保存在某个变量中:result=`db1`

(2)     返回值范围从0255

5.  在函数中同样可以使用参数变量,例如$0代表函数名本身,$1$2等等代表接下来的各个参数,包括$#代表参数的个数。

例:

#!/bin/bash

function addem {

           if [ $# -eq 3 ]

           then

                    echo $[ $1 + $2 ]

           else

                    echo -1

           fi

}

echo –n “Adding 10 and 15: “

value=`addem 10 15`

echo $value

exit 0

6.  不允许在函数中直接引用脚本的参数,除非在调用该函数时手动为其加入参数。

例:

#!/bin/bash

function func7 {

           echo $[ $1 * $2 ]

}

if [ $# -eq 2 ]

then

           value=`func7 $1 $2`          #此处引用脚本的参数

           echo “the result is $value”

else

           echo “usage: command num1 num2”

fi

exit 0

7.  脚本中定义的变量默认都为全局变量;若定义一个局部变量只需在前面加上local,如:local temp=$[ $value + 5 ]

#!/bin/bash

function func1 {

           local temp=$[ $value + 5 ]

           result=$[ $temp * 2 ]

}

temp=4

value=6

func1

echo “now result is $result”

echo “now temp is $temp”

exit 0


阅读(692) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-08 16:11:34

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com