web-dev-qa-db-fra.com

Comment appeler une fonction de la casse dans un script shell?

Bonjour à tous, j'essaie de lancer un script shell avec une déclaration de cas

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

function1()
{
    xyz commands
}

funciton2t()
{
    xyz commands
}

Je reçois l'erreur suivante:

function1: command not found
3
kashyap

Lorsque vous appelez une fonction, celle-ci doit être définie et connue lorsque vous appelez le function1 comme ceci:

u) function1 ;;

L'interprète n'a aucune idée de l'endroit où se trouve cette fonction, car il ne l'a pas encore vue. mettez donc vos fonctions au-dessus de la phrase case.

Cela réglerait le problème.

4
Ravexina

@ Kashyap (et autres). Il m'est difficile de savoir si vous avez suffisamment de réponses pour résoudre votre problème?
J'ai légèrement modifié votre code pour vraiment voir ce qui se passe:

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

J'ai nommé le fichier dummyFunc, lui ai donné x-bits et ce sont les résultats.

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

J'espère que cela aide kashyap?
Dans le cas contraire, montrez-nous à quoi ressemble votre script et ajoutez le résultat qu'il génère.

1
user680858

vous avez 2 erreurs de syntaxe:
le i avant le t et un t derrière le 2:

funciton2t()
{
xyz commands
}
0
user680858