明道学苑

学而不思则罔,思而不学则殆

0%

Bash中如何使用函数,接受函数返回值

本文说明Bash脚本如何定义使用函数,接收函数的返回值

参考这篇文章里面总结了5中Bash返回值的HACK方法:

使用return返回(适用于数值)

function myfun() {
return $(( 5 + 1 ));
}
myfun
RESULTS=$?
echo $RESULTS

这里的$?保存着函数运行的结果。

使用echo(用echo返回结果,同样适用于数值)

myfun() {
echo $(( 5 + 1 ));
}
RESULTS=$(myfun)
echo $RESULTS

近似全局变量的用法

myfun() {
foo=$(( 5 + 1 ));
}
myfun
RESULTS=$foo
echo $RESULTS

这里的$foo充当了全局变量的角色,将返回值从函数内带到函数外。

使用地址传递参数

myfun() {
eval $1="\$(( 5 + 1 ))";
}
myfun RESULTS
echo $RESULTS

这里使用了一个函数参数$1带出返回值,这个方法非常类似与C++中的引用和C中的参数传址。从一个侧面反应了Bash在参数传递的时候应该都是传递的内存地址。

使用地址传递(适用于数值)

myfun() {
let $1=5+1;
}
myfun RESULTS
echo $RESULTS