我正在使用bash脚本,并且想执行一个函数来打印返回值:

function fun1(){
  return 34
}
function fun2(){
  local res=$(fun1)
  echo $res
}

当我执行fun2时,它不会显示“34”。为什么会这样呢?

最佳答案

尽管bash具有return语句,但是您唯一可以指定的是函数自己的exit状态(介于0255之间的值,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。默认返回值是函数中最后执行的语句的退出值。

10-07 13:21