bash - 直接从调用函数返回返回值

时间:2012-06-14 12:17:30

标签: bash

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

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

bar() {
  return foo 1
}

bar

如果我这样做,bash会抱怨需要返回语句的数字参数。

修改

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

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

foo() {
  return 1
}

bar() {
  foo
  return 1
}

bar

答案 2 :(得分:1)

您只需返回上次调用$?:

的返回码即可
foo() {
  echo "$1"
  return 1
}

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

bar

答案 3 :(得分:1)

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

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

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

bar
echo "$?"

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

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

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

bar
echo "$?"

第二个版本将首先输出2,因为那是foo所做的,然后输出1,因为这是从bar的返回值传播的foo的返回值。