Transformer le résultat d'une variable positionnel en variable

Résolu
Karhm_75 -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Bon je vais essayer d'être claire:
Dans un script bash j'ai écrit une fonction qui nécessite une variable positionnelle, cette variable positionnel est elle même une variable et j'aimerais l'afficher dans un echo.
exemple

fonction () {
echo "le nom est "$1""
}


j'appel ma fonction
fonction server_name

et j'obtiens
le nom est server_name

alors que je voudrais le contenu de la variable server_name

je ne trouve pas de solution, mais est-ce seulement possible ?

je vous remercie par avance

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    sans utiliser eval
    $ verif_info () { echo ${!1} ; }; s=pécé ; verif_info s; 
    pécé
    1
  2. Pierre1310 Messages postés 8854 Statut Membre 652
     
    Salut,

    Je ne sais pas si ça s'applique en bash mais en programmation, quand on veut utiliser une variable dans une fonction, on lui envoie un paramètre.

    La fonction comme tu l'as déclarée ne prend pas de paramètre, elle va juste exécuter son code et se fermer.
    0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Je ne suis pas sûr d'avoir tout compris, mais bon…

    $ cat foo.sh 
    #! /bin/bash

    var="${2}"

    ma_fonction () {
    echo "le nom est ${1}"
    }

    ma_fonction ${var}


    $ ./foo.sh titi toto
    le nom est toto

    $ ./foo.sh titi tutu
    le nom est tutu

    0
  4. Karhm_75
     
    Bon pour etre plus claire je vais mettre la vrai fonction:
    verif_info () {                 #fonction de validation de l'information
    echo -e "Vous avez tapé "$1", l'information est-elle correcte ? (selection avec les chiffres)"
    PS3="Votre choix : "
    select REPONSE in OUI NON
    do
    case $REPONSE in
    OUI)
    break ;;

    NON)
    echo "Taper à nouveau : "
    read "$1"
    break ;;
    • ) echo "ERROR: Invalid selection" ;; esacdone}


    j'appelle donc cette fonction dans mon script de la manière suivante:
    verif_info server_name


    bien évidemment l'echo de la fonction me retourne le message suivant:
    Vous avez tapé server_name, l'information est-elle correcte ? (selection avec les chiffres)


    mais je voudrais que cet echo m'affiche le contenu de la variable server_name (donc $server_name)

    j'espère que c'est plus clair comme ça
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Alors il suffit de l'appeler comme ça
      verif_info ${server_name}
      , non ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Karhm_75
     
    Bon j'ai trouver la solution finalement,
    il suffit d'utiliser "eval" et d'utiliser la syntax suivante \$$1

    donc voilà a quoi ressemble la fonction:
    verif_info () {                 #fonction de validation de l'information
    eval user_entry=\$$1
    echo -e "Vous avez tapé "$COL""$user_entry""$NC", l'information est-elle correcte ? (selection avec les chiffres)"
    PS3="Votre choix : "
    select REPONSE in OUI NON
    do
    case $REPONSE in
    OUI)
    break ;;

    NON)
    echo "Taper à nouveau : "
    read "$1"
    break ;;
    • ) echo "ERROR: Invalid selection" ;; esacdone}
    0
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Tu n'as même pas eu besoin de mon aide ^^.
      0