在bash中,如何直接返回调用函数返回的返回值(sry,我不知道如何更好地表达这个)。例子:
foo() {
echo "$1"
return 1
}
bar() {
return foo 1
}
bar
如果我这样做,bash 会抱怨 return 语句需要一个数字参数。
编辑
我更新了我的示例以更好地表达真正的问题。我不仅想返回返回码,我还想先将一个值传递给函数......不确定这是否真的可行。
在bash中,如何直接返回调用函数返回的返回值(sry,我不知道如何更好地表达这个)。例子:
foo() {
echo "$1"
return 1
}
bar() {
return foo 1
}
bar
如果我这样做,bash 会抱怨 return 语句需要一个数字参数。
编辑
我更新了我的示例以更好地表达真正的问题。我不仅想返回返回码,我还想先将一个值传递给函数......不确定这是否真的可行。
您可以从 shell 脚本或 shell 函数返回的唯一内容是数字错误代码。
但是,您可以使用 echo、cat 等将一些文本打印到函数中的标准输出(或单独的脚本,它是相同的),然后使用 bacticks 语法或 $(...) 语法捕获输出。将参数传递给 shell 函数的工作方式与将参数传递给脚本的方式相同:
这应该有效:您只能在 bash 中返回一个数字。
foo() {
return 1
}
bar() {
foo
return 1
}
bar
您可以简单地返回最后一次调用 $? 的返回码:
foo() {
echo "$1"
return 1
}
bar() {
foo "bla"
return $?
}
bar
在您的示例的这些修改中,我将参数更改为foo
以便更容易区分一个结果与另一个结果。
foo() {
echo "$1"
return 1
}
bar() {
return "$(foo 2)"
}
bar
echo "$?"
前面将输出“2”。echo
infoo
用作 的返回值bar
。return
( 和) 可以处理的值的范围exit
是 0 到 255。
foo() {
echo "$1"
return 1
}
bar() {
foo 2
return "$?"
}
bar
echo "$?"
第二个版本将首先输出 2 ,因为这就是输出 1 ,foo
因为这是bar
从 的返回值传播的返回值foo
。