将函数和参数作为变量的 Shell 脚本

将函数和参数作为变量的 Shell 脚本

我有一个 shell 脚本,其中函数名称及其参数存储在变量中。我不知道怎么称呼它。我尝试了使用 eval 和不使用 eval,但没有任何效果正常。

我的代码示例:

VarFunction="Testfunc1"
VarName="Peter"
VarLastname="Lustig"
VarText="Is a really lucky guy!\n Maybe he knows some funny Stuff?"

eval ${VarFunction} "$VarName" "$VarLastname" "$VarText"


Testfunc1() {
     Name=$1
     LastName=$2
     Text=$3

     echo $Name 
     echo $Lastname
     echo $Text

}

当函数本身不是变量时,脚本可以正常工作。

Testfunc1 "$VarName" "$VarLastname" "$VarText"

但我想动态调用一个函数。

我怎样才能做到这一点?

感谢和问候

丹洛克

答案1

这是关于放置函数定义的位置。如果在调用函数之前声明该函数,则甚至可以通过变量来调用它。尝试这个:

VarFunction="Testfunc1"
VarName="Peter"
VarLastname="Lustig"
VarText="Is a really lucky guy!\n Maybe he knows some funny Stuff?"
Testfunc1() {
     Name=$1
     LastName=$2
     Text=$3

     echo $Name 
     echo $Lastname
     echo $Text 
}
${VarFunction} "$VarName" "$VarLastname" "$VarText"

答案2

在开头定义函数。效果很好。我的理解是,在 shell 中,您需要先定义函数,然后再调用它。

#!/usr/bin/bash
Testfunc1() {
     Name=$1
     LastName=$2
     Text=$3

     echo $Name
     echo $Lastname
     echo $Text

}

VarFunction="Testfunc1"
VarName="Peter"
VarLastname="Lustig"
VarText="Is a really lucky guy!\n Maybe he knows some funny Stuff?"

${VarFunction} "$VarName" "$VarLastname" "$VarText"

相关内容