Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4247239
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类:

2010-05-06 00:40:40

 
从shell函数中返回的数值的方法不多,有本书书里说只有写入文件或者全局变量。(The only way to return a value to the calling program is to write it to a file (or standardoutput) and have the calling program read (or assign) the value back into a variable.  )本文总结了即总方法:1.echo 法, 2.全局变量法,并给出了实例。其他方法以后再慢慢补充。
 
1. echo 法
在被调用函数中需要返回的值,使用echo将其显示至stdout,然后在调用的地方再使用`func var1`获得stdout中的值,获得值可以直接赋值给变量。例如:
 
#!/bin/bash
# Author: Aaron.Cheng
# Date:  2007-1-10
   # Check
# Core
#  echo法,返回一个字符串的长度
varCnt()
{
  var=$1   ret=0
  if [ "$var" != "" ] ; then
    ret=${#var} 
  fi
  echo $ret
}
 
main()
{
  printf "varCnt's 's return value is %s "  `varCnt ""`
  printf "varCnt's 's return value is %s "  `varCnt "1234"`
}
main
 
# Clear
exit  0

2. 全局变量法
  这个比较简单,声明一个全局变量 declare -i g_ret ,在function的返回值存储在全局变量中。调用处在函数执行完后,使用就可以了。例如:
#!/bin/bash
# Author: Aaron.Cheng
# Date:  2007-1-10
# Check
# Core
#  echo法,返回一个字符串的长度
declare -i g_ret=0
varCntGlobeVar()
{
  var=$1  
  if [ "$var" != "" ] ; then
    g_ret=${#var} 
  fi
}
main()
{
  varCntGlobeVar ""
  printf "varCntGlobeVar's 's return value is %d "  $g_ret
  varCntGlobeVar "1234"
  printf "varCntGlobeVar's 's return value is %d "  $g_ret
}
main
 
# Clear
exit
3. other.....in building..............:-)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yunccll/archive/2008/01/10/2034574.aspx
阅读(1201) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~