我有一个 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"