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:23:09
c'est normal, une fonction en shell ne retourne jamais autre chose qu'un nombre entier correspondant au code retour
pour résoudre ton pb, faut considérer la variable finale de ta fonction comme une variable globale
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 ?
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
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 |
et c'est tout
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