Script shell com função e parâmetro como Variáveis

3

Eu tenho um script de shell onde o nome da função e seus parâmetros são armazenados em variáveis. Eu não sei como chamar isso. Eu tentei com eval e sem, mas nada funciona corretamente.

exemplo do meu código:

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

}

Quando a função em si não é uma variável, o script funciona bem.

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

Mas eu quero chamar uma função dinamicamente.

Como posso fazer isso?

Obrigado e cumprimentos

Danloc

    
por Danloc 20.01.2018 / 17:22

2 respostas

4

Trata-se de onde você coloca a definição da função. Se você declarar a função antes de ser chamada, poderá chamá-la por variável. Tente isto:

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"
    
por 20.01.2018 / 17:27
0

Defina a função no começo. Funciona bem. O que eu entendo é no shell, você precisa definir a função primeiro, antes de ser chamado.

#!/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"
    
por 20.01.2018 / 18:49