#1 Le 24/02/2022, à 14:48
- MDBeaver
nom de tableau lié à une variable
Bonjour à tous et à toutes,
Soit le fichier texte suivant :
$ cat file.txt
"data 1_1"
"data 2_1"
"data 3_1"
"data 4_1"
"data 5_1"
"data 1_2"
"data 2_2"
"data 3_2"
"data 4_2"
"data 5_2"
"data 1_3"
"data 2_3"
"data 3_3"
"data 4_3"
"data 5_3"
un extrait de mon script pour le traitement de ces données :
#!/usr/bin/env Bash-5/bin/bash
TEMP_FILE=file.txt
nb_mag=3. # valeur fixée pour l'exemple, il s'agit d'une variable dans le script complet
nb_data=5
sed -i_bak -e 's/"//g' -e 's/\ /_/g' $TEMP_FILE
mapfile magasins < $TEMP_FILE
for i in `seq 1 $nb_data`
do
data_1[$i]=${magasins[$((0+5*((i-1))))]}
data_2[$i]=${magasins[$((1+5*((i-1))))]}
data_3[$i]=${magasins[$((2+5*((i-1))))]}
data_4[$i]=${magasins[$((3+5*((i-1))))]}
data_5[$i]=${magasins[$((4+5*((i-1))))]}
done
echo ${data_1[@]}
echo ${data_2[@]}
echo ${data_3[@]}
echo ${data_4[@]}
echo ${data_5[@]}
le script me donne bien le résultat escompté à savoir :
$ ./tab.sh
data_1_1 data_1_2 data_1_3
data_2_1 data_2_2 data_2_3
data_3_1 data_3_2 data_3_3
data_4_1 data_4_2 data_4_3
data_5_1 data_5_2 data_5_3
sachant que "nb_mag" est variable (et aucun moyen de connaître sa valeur)
J'aimerai trouver un moyen de remplacer les lignes de la boucle for en un minimum de lignes mais j'échoue lamentablement...
Si quelqu'un a une idée pour m'aider
Merci
Hors ligne
#2 Le 24/02/2022, à 16:42
- Watael
Re : nom de tableau lié à une variable
je te l'ai déjà dit : "variabiliser" les noms de variables est une mauvaise idée.
pourquoi ne peux-tu pas traiter les données "à la volée" ?
c'est-à-dire : tu lis les données nécessaires depuis le fichier, et tu fais tout de suite ce que tu as à faire avec ...
là, j'ai l'impression que tu passes par des variables intermédiaires parce que tu ne sais pas très bien où tu vas.
PS : mapfile -t sinon il va y avoir des enregistrements vides dans le tableau.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne