Transmettre un parametre

Résolu
sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
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

5 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. Utilisateur anonyme
     
    salut,

    function test_multi_function {
    > fvar1 "$1"
    > fvar2 "$1"
    >}
    $ var="est une fonction"
    $ test_multi_function "$var"
    1
  3. sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question