#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
merci pour toute aide
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
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