从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..............:-)
阅读(1323) | 评论(0) | 转发(0) |