gpt4 book ai didi

shell - shell ksh函数参数包含另一个要调用的函数名称

转载 作者:行者123 更新时间:2023-12-03 08:33:20 25 4
gpt4 key购买 nike

我正在尝试编写一个通用函数(例如holder)-该函数将第一个参数名称作为另一个函数名称(例如f1,f2,f3,f4...),并根据某些条件调用它们。喜欢

#!/bin/ksh
function f1
{
echo "f1"
return 7
}

function f2
{
echo "f2"
return 8
}

function holder
{
fptr=$1
`${fptr}`
ret=$?
echo $ret
}

holder "f1"
holder "f2"

现在上面的示例作品。但是,有时评估行 ${fptr}会在堆栈详细信息中发生奇怪的故障。我怀疑我调用该函数的方式可能存在一些问题。以上代码是示例模拟代码,实际代码包含复杂的 f1,f2逻辑。
  • 是否可以处理这种间接调用?
  • Holder类中的“函数调用”是否正确?还是应该单独处理?
  • 最佳答案

    很难弄清是什么导致了您的案例中的零星失败。但是,您可能需要更改以下几项:

  • 您可能要使用eval而不是反引号。
  • 您可以使用$0引用函数名称

  • 执行修改后的代码:
    function f1 {
    echo $0
    return 7
    }

    function f2 {
    echo $0
    return 8
    }

    function holder {
    eval "$1"
    echo $?
    }

    holder "f1"
    holder "f2"

    返回:
    f1
    7
    f2
    8

    关于shell - shell ksh函数参数包含另一个要调用的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17229243/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com