分类: LINUX
2010-10-22 14:05:23
myfun() {这里的$?保存着函数运行的结果。
return $(( 5 + 1 ));
}
myfun
RESULTS=$?
echo $RESULTS
myfun() {3. 近似全局变量的用法
echo $(( 5 + 1 ));
}
RESULTS=$(myfun)
echo $RESULTS
myfun() {这里的$foo充当了全局变量的角色,将返回值从函数内带到函数外。
foo=$(( 5 + 1 ));
}
myfun
RESULTS=$foo
echo $RESULTS
myfun() {这里使用了一个函数参数$1带出返回值,这个方法非常类似与C++中的引用和C中的参数传址。从一个侧面反应了Bash在参数传递的时候应该都是传递的内存地址。
eval $1="\$(( 5 + 1 ))";
}
myfun RESULTS
echo $RESULTS
myfun() {
let $1=5+1;
}
myfun RESULTS
echo $RESULTS
当然,以上这些方法可以单独使用,也可以结合使用。比如可以将传址和使用echo的方法结合起来:
function myfunc()
{
local __resultvar=$1
local myresult='some value'
if [[ "$__resultvar" ]]; then
eval $__resultvar="'$myresult'"
else
echo "$myresult"
fi
}
myfunc result
echo $result
result2=$(myfunc)
echo $result2
这样使用可以提供最大的灵活性。