在bash中,我如何直接返回通过调用函数返回的返回值(sry,我不知道如何更好地表达这个)。例如:
foo() {
echo "$1"
return 1
}
bar() {
return foo 1
}
bar
如果我这样做,bash会抱怨需要返回语句的数字参数。
修改
我更新了我的例子以更好地表达真正的问题。我不仅要返回返回代码,我还想先将值传递给函数...不确定这是否真的可行。
答案 0 :(得分:3)
您可以从shell脚本或shell函数返回的唯一内容是数字错误代码。
但是,你可以使用echo,cat等在函数(或单独的脚本,它是相同的)中打印一些文本到标准输出,然后使用bacticks语法或$(...)语法捕获输出。 将参数传递给shell函数的工作方式与将参数传递给脚本的方式相同:
答案 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
的返回值。