#1 Le 23/11/2015, à 21: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, à 22: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, à 22: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, à 22: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, GNOME 3.36.8
24.04 en cours de tests
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, à 22: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, à 22:40
- RoodKrad
Re : Afficher variable dans une variable
Ca ne change rien dans les deux cas...
Hors ligne
#7 Le 23/11/2015, à 23: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 23/11/2015, à 23: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, à 00:21
- Watael
Re : Afficher variable dans une variable
on peut voir qu'il n'y a pas d'affectation du tableau.
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, à 00:23)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 24/11/2015, à 07: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