[bash4] tableau associatif: élément en trop
Résolu/Fermé
Utilisateur anonyme
-
13 juil. 2010 à 14:46
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 13 juil. 2010 à 20:36
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 13 juil. 2010 à 20:36
A voir également:
- [bash4] tableau associatif: élément en trop
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Tableau coefficient marge ✓ - Forum Excel
- Tableau de combinaison loto 5/90 - Forum Excel
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
Modifié par lami20j le 13/07/2010 à 18:41
Modifié par lami20j le 13/07/2010 à 18:41
Salut,
Il faut faire attention au nom des variables.
table="${line::5} - ici tu ajoutes un élément au tableau table
Mets plutôt
Dans ton code tu remarques qu'avant de commencer remplir le tableau avec sed il y a déjà un élément.
GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
Il faut faire attention au nom des variables.
table="${line::5}" champ="${line:11:6}" table[$table]+
table="${line::5} - ici tu ajoutes un élément au tableau table
Mets plutôt
t="${line::5}" champ="${line:11:6}" table[$t]+
Dans ton code tu remarques qu'avant de commencer remplir le tableau avec sed il y a déjà un élément.
lami20j@debian-acer:~$ cat bb2.sh #!/usr/local/bin/bash declare -A table file1="fic1" file2="fic2" while read line; do t="${line::5}" champ="${line:11:6}" echo "---- ${#table[@]} élément(s)" table[$t]+="$(sed -n '/'"$table"';;'"$champ"'/{s/[^;;]*;;[^;;]*;;\([^;;]*\);;\([^;;]*\);;\([^;;]*\);;.*/\1 \2 (\3)/ s/ C / Char / s/ D / Date / s/ N / Number / p;q}' ${file2}), " done < ${file1} for i in "${!table[@]}"; do printf 'CREATE TABLE %s (%s\b\b);\n' "$i" "${table[$i]}" done lami20j@debian-acer:~$ sh bb.sh ---- 1 élément(s) ---- 2 élément(s) ---- 2 élément(s) ---- 2 élément(s) ---- 3 élément(s) CREATE TABLE tab01 (champ1 Date (08), champ2 Number (05), champ3 Char (50)); CREATE TABLE tab02 (champ1 Date (08), champ2 Number (05)); CREATE TABLE 0 (tab); lami20j@debian-acer:~$ sh bb2.sh ---- 0 élément(s) ---- 1 élément(s) ---- 1 élément(s) ---- 1 élément(s) ---- 2 élément(s) CREATE TABLE tab01 (champ1 Date (08), champ2 Number (05), champ3 Char (50)); CREATE TABLE tab02 (champ1 Date (08), champ2 Number (05)); lami20j@debian-acer:~$
GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
dubcek
Messages postés
18748
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
26 septembre 2024
5 618
13 juil. 2010 à 15:03
13 juil. 2010 à 15:03
hello
une ligne vide dans un des fichiers ?
une ligne vide dans un des fichiers ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 juil. 2010 à 16:57
13 juil. 2010 à 16:57
Salut,
J'ai trituré ton code dans tous les sens, rajouté des marqueurs ( echo "${!table[@]}" ) après chaque itération, changer l'$IFS et rien n'y fait ;-(((
L'intrus est créé dès la création du 1er élément du tableau, pourquoi je n'en ai pas la moindre idée ;-\
A suivre... ;-))
J'ai trituré ton code dans tous les sens, rajouté des marqueurs ( echo "${!table[@]}" ) après chaque itération, changer l'$IFS et rien n'y fait ;-(((
L'intrus est créé dès la création du 1er élément du tableau, pourquoi je n'en ai pas la moindre idée ;-\
A suivre... ;-))
13 juil. 2010 à 18:49
J'avais mis des echos de partout sauf là où tu as mis les tiens ;-\
13 juil. 2010 à 18:51
13 juil. 2010 à 20:32
un instant je l'ai oublié :((
merci lami20j.
13 juil. 2010 à 20:36