web-dev-qa-db-ja.com

変数としての関数とパラメーターを持つシェルスクリプト

関数名とそのパラメーターが変数に格納されているシェルスクリプトを取得しました。私はそれを呼び出す方法がわかりません。 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"

しかし、関数を動的に呼び出したいです。

どうやってやるの?

感謝と挨拶

ダンロック

3
Danloc

これは、関数定義を配置する場所です。呼び出される前に関数を宣言すると、変数によっても呼び出すことができます。これを試して:

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"
4
user147505

最初に関数を定義します。正常に動作します。私が理解しているのはシェルです。呼び出される前に、まず関数を定義する必要があります。

#!/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"
0
yabrasu