[RESOLU] Pb dans une fonction pour retourner une chaine de caracteres

Pb dans une fonction pour retourner une chaine de caracteres [RESOLU] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-05-2008 à 10:14:14    

Bonjour,  
 
Je réalise actuellement un script shell et j'ai un souci pour retourner une chaine de caractère à partir d'une fonction. En fait, j'ai créé une fonction permettant de vérifier la présence d'un fichier dans le répertoire courant. Si le fichier n'est pas présent, je redemande de saisir à nouveau le nom du fichier.  
 
Voici ma fonction :  
 
VERIF_PRESENCE_FICHIER()
{
 
        echo "Quel est le nom du fichier ? "
        read fichier
 
        while ( test ! -f $fichier )
        do
                echo "le fichier \"$fichier\" n'existe pas. Merci de saisir le bon nom du fichier : "
                read fichier
        done
 
      return $fichier
}
 
Mon appel à la fonction est de la manière suivante :  
 
local fic=$(VERIF_PRESENCE_FICHIER)
echo $fic
 
Malheureusement, mon script bloque et il m'est impossible d'afficher le nom du fichier retourner par la fonction.  
 
Auriez-vous une lumière ?  
 
Cordialement,  
 
Olivier


Message édité par cosca14 le 16-05-2008 à 11:54:58
Reply

Marsh Posté le 16-05-2008 à 10:14:14   

Reply

Marsh Posté le 16-05-2008 à 10:23:09    

c'est normal, une fonction en shell ne retourne jamais autre chose qu'un nombre entier correspondant au code retour :spamafote:
 
pour résoudre ton pb, faut considérer la variable finale de ta fonction comme une variable globale :spamafote:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 16-05-2008 à 11:32:13    

J'ai déclaré la variable globale au début de mon script de cette manière :  
fichier=""
 
et à la fin de ma fonction je retourne $fichier  
Ensuite, j'appel ma fonction de la façon suivante :  
 
fichier=$(VERIF_PRESENCE_FICHIER)
 
Mais mon script bloque toujours, je ne comprend pas trop, est-ce mon return qui est mauvais ?  

Reply

Marsh Posté le 16-05-2008 à 11:53:29    

En fait, je viens de comprendre. J'arrive à retourner une chaine en utilisant une variable globale

Reply

Marsh Posté le 16-05-2008 à 11:57:30    

oui, je t'ai dis que tu ne pouvais pas retourner autre chose qu'un nombre entier correspondant au code retour de ton traitement.

 

et c'est pas la peine de pré-déclarer ta variable, tu appelles ta fonction et ensuite tu regardes le contenu de ta variable:

 

VERIF_PRESENCE_FICHIER
echo $fichier


et c'est tout :spamafote:


Message édité par wedgeant le 16-05-2008 à 11:57:57

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed