我尝试从一个bash函数中调用另一个bash函数,但它没有按预期工作:
# /bin/bash
function func1(){
echo "func1 : arg = ${1}"
return 1
}
function func2(){
echo "func2 : arg = ${1}"
local var=func1 "${1}"
echo "func2 : value = $var"
}
func2 "xyz"
并且电流输出为:
Current output :
func2 : arg = xyz
func2 : value = func1
问:我如何修改上面的程序,以便得到下面的输出?:
Desired output :
func2 : arg = xyz
func1 : arg = xyz
func2 : value = 1
3条答案
按热度按时间2mbi3lxu1#
Bash中的函数与其他语言中的函数不同,它们只能返回0到255之间的整数。在函数调用之后,可以使用
$?
获取该值。如果你想获取其他值,例如字符串,可以在子shell中调用它:将从函数中获取stdout(来自
echo
语句)并将其导入$var
。顺便提一下,函数的语法是:
或
ohtdti5x2#
将
func2
定义更改为以下内容:slmsl1lt3#
这条注解可能很有用,因为它与函数中的关键字return不用于返回值,而是用于返回函数的状态(失败或成功)有关:
此外,请记住,默认情况下,任何函数都将返回该函数执行的最后一个命令的退出代码:
但是对于你的任务,@choroba给了你正确的答案。