2

在bash中,如何直接返回调用函数返回的返回值(sry,我不知道如何更好地表达这个)。例子:

foo() {
  echo "$1"
  return 1
}

bar() {
  return foo 1
}

bar

如果我这样做,bash 会抱怨 return 语句需要一个数字参数。

编辑

我更新了我的示例以更好地表达真正的问题。我不仅想返回返回码,我还想先将一个值传递给函数......不确定这是否真的可行。

4

4 回答 4

3

您可以从 shell 脚本或 shell 函数返回的唯一内容是数字错误代码。

但是,您可以使用 echo、cat 等将一些文本打印到函数中的标准输出(或单独的脚本,它是相同的),然后使用 bacticks 语法或 $(...) 语法捕获输出。将参数传递给 shell 函数的工作方式与将参数传递给脚本的方式相同:

http://www.freeos.com/guides/lsst/advance01.html

于 2012-06-14T12:22:41.533 回答
1

这应该有效:您只能在 bash 中返回一个数字。

foo() {
  return 1
}

bar() {
  foo
  return 1
}

bar
于 2012-06-14T12:22:41.100 回答
1

您可以简单地返回最后一次调用 $? 的返回码:

foo() {
  echo "$1"
  return 1
}

bar() {
  foo "bla"
  return $?
}

bar
于 2012-06-14T12:29:50.823 回答
1

在您的示例的这些修改中,我将参数更改为foo以便更容易区分一个结果与另一个结果。

foo() {
  echo "$1"
  return 1
}

bar() {
  return "$(foo 2)"
}

bar
echo "$?"

前面将输出“2”。echoinfoo用作 的返回值barreturn( 和) 可以处理的值的范围exit是 0 到 255。

foo() {
  echo "$1"
  return 1
}

bar() {
  foo 2
  return "$?"
}

bar
echo "$?"

第二个版本将首先输出 2 ,因为这就是输出 1 ,foo因为这是bar从 的返回值传播的返回值foo

于 2012-06-15T02:06:00.413 回答