Transmettre un parametre

Résolu/Fermé
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 17 sept. 2013 à 10:55
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 17 sept. 2013 à 14:47
Bonjour,

Savez-vous comment transmettre un paramètre à une autre fonction?

Je m'explique... J'ai plein de petites fonction
$function fvar1 { echo "fvar1 : $1" }
$
$function fvar2 { echo "fvar2 : $1" }
...
que je souhaite pouvoir appeler de façon individuelle ; jusque là tout va bien :
$var="est une fonction"
$fvar1 $var
fvar1 : est une fonction
Seulement, je souhaite aussi pouvoir les appeler toutes en même temps grâce à une autre fonction :
$function test_multi_function {
$ fvar1
$ fvar2
$}
$var="est une fonction"
$test_multi_function $var

fvar1 :
fvar2 :

J'ai trouvé une petite solution à ce problème :
$function fvar1 { echo "fvar1 : $var2" }

$function fvar2 { echo "fvar2 : $var2" }

$function test_multi_function {
$var2=$1
$fvar1
$fvar2
$}

$var="est une fonction"
$test_multi_function $var

fvar1 : est une fonction
fvar2 : est une fonction
Mais le problème c'est que je ne vois plus comment les appeler individuellement...

Quelqu'un pourrait m'aider?

Merci
A voir également:

5 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
17 sept. 2013 à 11:50
Salut,

$ cat foo.sh 
#!/bin/bash
#set -x
A="$1"
B="$2"

fvar1 () {
echo "${FUNCNAME} : $A"
}
fvar2 () {
echo "${FUNCNAME} : $A"
}
fvar3 () {
echo "${FUNCNAME} : $A"
}
fvar4 () {
echo "${FUNCNAME} : $A"
}
fvar5 () {
echo "${FUNCNAME} : $A"
}
multi_f () {
for i in $(seq "$B")
do
echo -n "${FUNCNAME} : "; fvar${i} $A
done
}

fvar1 "$A"
fvar3 "$A"
multi_f "$A" "$B"

$ ./foo.sh "Est une fonction" 5
fvar1 : Est une fonction
fvar3 : Est une fonction
multi_f : fvar1 : Est une fonction
multi_f : fvar2 : Est une fonction
multi_f : fvar3 : Est une fonction
multi_f : fvar4 : Est une fonction
multi_f : fvar5 : Est une fonction

$

1
Utilisateur anonyme
17 sept. 2013 à 14:34
salut,

function test_multi_function {
> fvar1 "$1"
> fvar2 "$1"
>}
$ var="est une fonction"
$ test_multi_function "$var"
1
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
17 sept. 2013 à 11:03
J'ai trouvé une solution qui marche mais qui ne me plait pas beaucoup car rajoute beaucoup de lignes de code :
$function fvar1 {
$ if [ $# -eq 1 ];then
$ echo "fvar1 : $1"
$ else
$ echo "fvar1 : $var2"
$ fi
$}
$var="est une fonction"
$test_multi_function $var #test_multi_function inchangé, cf sujet de forum

fvar1 : est une fonction
fvar2 : est une fonction

$var="est une fonction"
$fvar1 $var

fvar1 : est une fonction

Quelqu'un aurait une solution plus simple?
0
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
17 sept. 2013 à 14:25
Bonjour,

la deuxième ligne de commande #set -x a une importance ou c'est juste un commentaire? Je n'ai aucun changement avec ou sans...

${FUNCNAME} ne renvoie rien du tout
et la commande $ ./foo.sh "Est une fonction" 5 me renvoie :
fvar1 : Est une fonction
fvar3 : Est une fonction
seq: not found
après modifications de fvar1 et fvar3 (j'ai juste remplacé ${FUNCNAME} par le nom de la fonction

PS : la commande ./foo.sh "Est une fonction" 5 a été placé dans un fichier .sh différent de foo.sh (sinon il continue à l'infinie, j'ai testé ^^)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
Modifié par sym59 le 17/09/2013 à 14:49
0