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 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