Como chamar uma função do caso no shell script?

1

Oi tudo Estou tentando executar um script de shell com a instrução case

opt=$1
case $opt
in
    u) function1 ;;
    g) function2 ;;
    *) exit ;;
esac

function1()
{
    xyz commands
}

funciton2t()
{
    xyz commands
}

Estou recebendo o seguinte erro:

function1: command not found
    
por kashyap 24.04.2017 / 22:28

3 respostas

3

Quando você está chamando uma função, ela deve ser definida e conhecida quando você está chamando o function1 assim:

u) function1 ;;

O intérprete não tem idéia de onde esta função é, porque ela ainda não a viu; então coloque suas funções acima da sentença case .

Isso resolveria o problema.

    
por Ravexina 24.04.2017 / 22:34
1

@kashyap (e outros). Não está claro se você tem resposta suficiente para corrigir o seu problema?
Eu modifiquei seu código um pouco para realmente ver o que está ocorrendo:

function1()
{
    echo "I am function 1"
}

function2()
{
    echo "I am function 2"
}

opt=$1
case $opt
in
    u) function1 ;;
    g) function2 ;;
    *) echo "Nothing to do"
       exit ;;
esac

Eu nomeei o arquivo dummyFunc , dei-lhe x-bits e estes são os resultados.

$ ./dummyFunc u
I am function 1
$ ./dummyFunc g
I am function 2
$ ./dummyFunc 
Nothing to do
$

Espero que isso ajude kashyap ?
Se não, mostre-nos como seu script se parece e adicione a saída que ele gera.

    
por user680858 25.04.2017 / 11:41
0

você tem 2 erros de sintaxe:
 oi antes do t e um t atras do 2:

funciton2t()
{
xyz commands
}
    
por user680858 25.04.2017 / 00:07