Transmettre un parametre

Résolu
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. 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?
    1. Contributeur
      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. 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é ^^)
        1. salut,

          function test_multi_function {
          > fvar1 "$1"
          > fvar2 "$1"
          >}
          $ var="est une fonction"
          $ test_multi_function "$var"