我正在使用bash脚本,并且想执行一个函数来打印返回值:
function fun1(){
return 34
}
function fun2(){
local res=$(fun1)
echo $res
}
当我执行
fun2
时,它不会显示“34”。为什么会这样呢? 最佳答案
尽管bash具有return
语句,但是您唯一可以指定的是函数自己的exit
状态(介于0
和255
之间的值,0表示“成功”)。因此,return
不是您想要的。
您可能希望将return
语句转换为echo
语句-这样,可以使用$()
大括号捕获函数输出,这似乎正是您想要的。
这是一个例子:
function fun1(){
echo 34
}
function fun2(){
local res=$(fun1)
echo $res
}
获取返回值(如果您只想返回0-255的整数)的另一种方法是$?
。function fun1(){
return 34
}
function fun2(){
fun1
local res=$?
echo $res
}
另外,请注意,您可以使用返回值来使用 bool 逻辑,例如fun1 || fun2
仅在fun2
返回非fun1
值的情况下才会运行0
。默认返回值是函数中最后执行的语句的退出值。