在另一个功能中调用一个功能



我试图从另一个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

bash中的函数与许多其他语言中的函数相同,它们只能在0到255之间返回整数。在函数调用后,使用$?抓住了这一点。如果您想获得其他值,例如字符串,请在子壳中调用:

local var=$(func1 "${1}")

将从函数中获取$var的Stdout(从echo语句)。

顺便说一句,函数语法为:

function func1 { ... }

func1() { ... }

func2的定义更改为以下:

function func2 () {
    echo "func2 : arg = ${1}"
    func1 "${1}"
    local var=$?
    echo "func2 : value = $var"
}

此注释可能很有用,因为它以某种方式相关,功能中的关键字返回用于返回值,而是函数的状态(失败或成功):

function fun() {
    return 1
}
if ! fun; then
    echo "Fail"
fi

另外,请记住,默认情况下,任何功能都会返回该功能执行的最后一个命令的退出代码:

function fun() {
   echo "hello, World!"
   cat some_file_that_does_not_exist # exit code 1
}
if ! fun; then
    echo "Fail"
fi

但是,对于您的任务,@choroba给了您正确的答案。

相关内容

  • 没有找到相关文章

最新更新