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 23/11/2015, à 22:54

RoodKrad

Afficher variable dans une variable

Salut,

J'ai fait un script pour afficher des données dans une variable, qui est en fait "deux variables":

for i in $prerequis
do
	eval pre$cpt=$i
	cpt=$(($cpt+1))
done 

cpt=$(($cpt-1))
echo $cpt
echo $pre3
echo $((pre$cpt))

J'ai effectivement mes données dans pre1 pre2 pre3 etc...
Mais pour afficher pre avec une variable comme sur la dernière ligne, je sèche.
J'ai tout essayé mais je rencontre à chaque fois des erreurs...

Merci

Hors ligne

#2 Le 23/11/2015, à 23:15

Watael

Re : Afficher variable dans une variable

salut,

les tableaux sont fait pour ce genre de cas !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 23/11/2015, à 23:30

RoodKrad

Re : Afficher variable dans une variable

comme ça: echo ${pre[$cpt]}
ça me met un Bad substitution

Hors ligne

#4 Le 23/11/2015, à 23:36

Arbiel

Re : Afficher variable dans une variable

Il faudrait peut-être indiquer que cpt est numérique
echo ${pre[$((cpt))]}
?


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#5 Le 23/11/2015, à 23:38

Watael

Re : Afficher variable dans une variable

le shebang doit #!/bin/bash et non #!/bin/sh


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 23/11/2015, à 23:40

RoodKrad

Re : Afficher variable dans une variable

Ca ne change rien dans les deux cas...

Hors ligne

#7 Le 24/11/2015, à 00:02

Watael

Re : Afficher variable dans une variable

montre-nous tout ton script, s'il te plaît.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 24/11/2015, à 00:31

RoodKrad

Re : Afficher variable dans une variable

#!/bin/sh

fichier=makefile

# on met les prérequis chacun dans une variable

prerequis=`grep -E '^'$1'' $fichier | cut -d ':' -f2 | tr -d "\t" `
cpt=1
for i in $prerequis
do
	eval pre$cpt=$i
	cpt=$(($cpt+1))
done 

cpt=$(($cpt-1))
echo $cpt
echo $pre3
echo ${pre[$cpt]}

Mais bon ça n'aide pas je pense, j'ai donné le principal avant

Hors ligne

#9 Le 24/11/2015, à 01:21

Watael

Re : Afficher variable dans une variable

on peut voir qu'il n'y a pas d'affectation du tableau. sad

de ce que je comprends, la boucle for est inutile :

fichier=makefile # il faut donner le chemin (absolu, c'est mieux) du fichier
resultatGrep=( $(grep -E '^'$1'' $fichier | cut -d ':' -f2 | tr -d "\t") ) # affectation du tableau
echo "${resultatGrep[@]: -1}" # affichage du dernier élément du tableau

attention à l'espace indispensable entre : et -

et, il faut que le shebang renvoie à bash !

Dernière modification par Watael (Le 24/11/2015, à 01:23)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 24/11/2015, à 08:38

pingouinux

Re : Afficher variable dans une variable

Bonjour,

$ cat mon_script
#!/bin/bash

prerequis="val1 val2 val3"
cpt=0
for i in $prerequis
do
        eval pre$((++cpt))=$i
done

echo $cpt
echo $pre3
VAR=pre$cpt
echo ${!VAR}
$ ./mon_script
3
val3
val3

Hors ligne