shell 函数返回值的方法

摘自:http://hi.baidu.com/2enjoy/blog/item/5e0e335a6e22f4cd9c8204e5.html

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  

原文地址:https://www.cnblogs.com/shicf/p/2364367.html