Chinaunix首页 | 论坛 | 博客
  • 博客访问: 831556
  • 博文数量: 155
  • 博客积分: 4004
  • 博客等级: 中校
  • 技术积分: 2070
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-19 11:37
文章分类

全部博文(155)

文章存档

2014年(3)

2013年(9)

2012年(28)

2011年(20)

2010年(29)

2009年(66)

我的朋友

分类:

2010-02-04 15:59:40

shell 函数返回值的方法
从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..............:-)
 
阅读(1033) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~