Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/11/2011, à 15:41

tiresias

[résolu] [script bash] utilisation d'une variable d'entrée

bonjour

J'ai un petit script en bash à écrire qui consiste en gros en ceci:
j'ai des variables de ce genre affectées en début de script:
variable_1=xxx
variable_2=yyy

j'ai une fonction ma_fonc qui prend un argument.
et j'aimerais que cette fonction fonctionne de cette manière:

ma_fonc 1 doit renvoyer xxx
ma_fonc 2 doit renvoyer yyy

Or en fait je ne peux pas faire
function ma_fonc
{
echo $variable_$1
}

j'ai essayé plein d'autres syntaxes (avec quotes, doubles quotes, etc), mais pour l'instant je n'ai pas de solution.

le nombre entier à la fin de variable_ est incrémenté, c'est pour cela que faire des echo variable_1 ou variable_2 n'est pas une option viable hmm
merci pour toute aide smile

Dernière modification par tiresias (Le 22/11/2011, à 18:07)

Hors ligne

#2 Le 22/11/2011, à 16:53

sputnick

Re : [résolu] [script bash] utilisation d'une variable d'entrée

Explique mieux le contexte de pourquoi tu cherches à faire ça, et si t'es prêt à utiliser des tableaux, parce que là, la seule solution que je voit c'est la commande eval et c'est pas propre.

help eval

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 22/11/2011, à 17:23

tiresias

Re : [résolu] [script bash] utilisation d'une variable d'entrée

merci pour ton aide ^^

donc j'ai un script qui lance un programme sous plusieurs modes

le script s'apelle selon la commande:   

mon_script <mode>

  où <mode> est un entier désignant le mode à utiliser.


Dans le script j'ai crée une variable

mode=$1

ensuite le script doit afficher à l'écran des instructions propres à chaque mode.
J'ai donc des variables:

instruction_a_afficher_1
instruction_a_afficher_2
instruction_a_afficher_3

et je dois afficher celle qui correspond au mode choisi.

je doit donc faire un truc du genre (mais qui hélas n'est pas correct de la manière dont je l'ai écrit)

echo $instruction_a_afficher_$<mode>

certes je pourrais faire un

if [ <mode> -eq 1 ]
then
echo $instruction_a_afficher_1
fi

et ainsi de suite, mais ça n'est pas propre du tout, surtout que le nombre de modes est apellé à changer.

voilà j'espère avoir été plus clair smile

Dernière modification par tiresias (Le 22/11/2011, à 17:25)

Hors ligne

#4 Le 22/11/2011, à 17:27

ehmicky

Re : [résolu] [script bash] utilisation d'une variable d'entrée

Salut,

Utilise une array.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#5 Le 22/11/2011, à 17:35

AnsuzPeorth

Re : [résolu] [script bash] utilisation d'une variable d'entrée

bjr,
Bon, j'espère avoir compris l'énoncé (suis un specialiste pour rien comprendre !)

~$ mode=1
~$ instruction_a_afficher_1=yesss
~$ vv=instruction_a_afficher_${mode}
~$ echo ${!vv}
yesss

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#6 Le 22/11/2011, à 17:54

tiresias

Re : [résolu] [script bash] utilisation d'une variable d'entrée

bon j'ai trouvé... en fait j'avais tenté l'idée de Ansuz Peorth au tout début mais ça ne fonctionnais pas (ça me renvoyait le nom de la variable)

Le problème vient du fait que j'exécutais le script en ksh. SI je l'exécute en bash ça fonctionne.....

Quelqu'un a une idée si c'est possible de faire la même commande en ksh? (le mec pour qui j'écrit le script va gueuler si je lui dit que je l'exécute en bash)

Dernière modification par tiresias (Le 22/11/2011, à 17:55)

Hors ligne

#7 Le 22/11/2011, à 18:06

tiresias

Re : [résolu] [script bash] utilisation d'une variable d'entrée

trouvé!

en ksh:

~$ mode=1
~$ instruction_a_afficher_1=yesss
~$ nameref vv=instruction_a_afficher_${mode}
~$ echo $vv
yesss

merci pour votre aide ^^

Hors ligne

#8 Le 22/11/2011, à 18:11

ehmicky

Re : [résolu] [script bash] utilisation d'une variable d'entrée

Encore une fois utilise une array (associative, si mode n'est pas un nombre) :

$ instruction_a_afficher[1]="aaa"
$ instruction_a_afficher[2]="bbb"
$ instruction_a_afficher[3]="ccc"
$ mode=2
$ echo "${instruction_a_afficher[$mode]}" 
bbb

Les langages interprétés te permettent de jouer avec les noms de variables, mais je pense vraiment pas que ce soit quelque chose à encourager.

Dernière modification par ehmicky (Le 22/11/2011, à 18:12)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#9 Le 22/11/2011, à 18:30

tiresias

Re : [résolu] [script bash] utilisation d'une variable d'entrée

certes ce serait bien si il n'y avais qu'une seule instruction, mais il y a plusieurs instructions relative à chaque mode qui interviennent à différents endroits du script. Il faudrait donc des tableaux 2D.

Hors ligne

#10 Le 22/11/2011, à 19:41

ehmicky

Re : [résolu] [script bash] utilisation d'une variable d'entrée

Tu peux utiliser des pseudo-multidimensionnels arrays avec des arrays associatives :

declare -A matrice
$ matrice[1;1]="a"
$ matrice[1;2]="b"
$ matrice[2;1]="c"
$ matrice[2;2]="d"
$ index1=1
$ index2=2
$ echo ${matrice[$index1;$index2]}
b

Dernière modification par ehmicky (Le 22/11/2011, à 19:41)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne