Copier un tableau dans un autre en bash
Fermé
Jedebute_72000
Messages postés
4
Date d'inscription
vendredi 25 janvier 2019
Statut
Membre
Dernière intervention
13 février 2019
-
26 janv. 2019 à 00:06
Jedebute_72000 - 28 janv. 2019 à 00:17
Jedebute_72000 - 28 janv. 2019 à 00:17
A voir également:
- Copier un tableau dans un autre en bash
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Copier une vidéo youtube - Guide
- Tableau word - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. - Forum Excel
4 réponses
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
26 janv. 2019 à 11:20
26 janv. 2019 à 11:20
salut,
l'emploi d'une variable dans le nom d'une variable doit être découragé.
ça apporte des complications inutiles.
que veux-tu faire finalement ?
declare, pour un tableau indexé, est inutile.
l'emploi d'une variable dans le nom d'une variable doit être découragé.
ça apporte des complications inutiles.
que veux-tu faire finalement ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
26 janv. 2019 à 11:31
26 janv. 2019 à 11:31
Salut,
Source
eval tab_"${x}"'=( ${tab[@]} )'
Source
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
26 janv. 2019 à 13:07
26 janv. 2019 à 13:07
oui, mais, «
il vaut mieux chercher une autre/meilleure solution, à partir des besoins finaux de l'utilisateur.
d'autant qu'après il faudra retrouver les éléments indexés d'un nom du tableau contenant une variable.
comme je l'ai dit, cette "solution" n'apporte que des complications inutiles.
eval, c'est mal ! ».
il vaut mieux chercher une autre/meilleure solution, à partir des besoins finaux de l'utilisateur.
d'autant qu'après il faudra retrouver les éléments indexés d'un nom du tableau contenant une variable.
comme je l'ai dit, cette "solution" n'apporte que des complications inutiles.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
>
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
26 janv. 2019 à 13:15
26 janv. 2019 à 13:15
Oui je sais que
Mais si tu as mieux, je prends ;-)
evalc'est evil ;-)
Mais si tu as mieux, je prends ;-)
Bonjour et merci.
Bien noté pour "declare".
J'ai un tableau de la forme :
tab=(objet1 crit1 crit2 crit3 objet2 crit1 crit2 crit3 objet3 crit1 crit2 crit3)
Je cherche tous les objets qui répondent à 1 ou 2 ou 3 critères (donnés dans le désordre).
Je propose les différents critères et demande de faire un choix.
read -p "Taper votre (vos) choix : " choix
Choix=( $choix )
Je pensais boucler sur les choix.
Je cherche tous les objets qui correspondent à un choix et les range dans tab_$x (x étant l'indice de ma boucle) puis je cherche dans tab_$x les objets qui correspondent au deuxième choix et les range dans tab_$y ($y étant le nouvel indice de ma boucle) , .....
Bien noté pour "declare".
J'ai un tableau de la forme :
tab=(objet1 crit1 crit2 crit3 objet2 crit1 crit2 crit3 objet3 crit1 crit2 crit3)
Je cherche tous les objets qui répondent à 1 ou 2 ou 3 critères (donnés dans le désordre).
Je propose les différents critères et demande de faire un choix.
read -p "Taper votre (vos) choix : " choix
Choix=( $choix )
Je pensais boucler sur les choix.
Je cherche tous les objets qui correspondent à un choix et les range dans tab_$x (x étant l'indice de ma boucle) puis je cherche dans tab_$x les objets qui correspondent au deuxième choix et les range dans tab_$y ($y étant le nouvel indice de ma boucle) , .....
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
26 janv. 2019 à 17:17
26 janv. 2019 à 17:17
j'utiliserais d'abord un tableau associatif :
ensuite, je ne comprends pas bien ce que tu veux faire.
si tu veux ajouter des éléments dans un tableau à chaque boucle, je ne vois pas pourquoi tu voudrais changer le nom du tableau, et par là changer de tableau :/
declare -A objets # un tableau associatif doit obligatoirement être déclaré objets["objet1"]="crit1 crit2 crit3" objets["objet2"]="crit1 crit2 crit3" objets["objet3"]="crit1 crit2 crit3"
ensuite, je ne comprends pas bien ce que tu veux faire.
si tu veux ajouter des éléments dans un tableau à chaque boucle, je ne vois pas pourquoi tu voudrais changer le nom du tableau, et par là changer de tableau :/
read -p 'entrez vo(tre/s) choix : ' choix for c in $choix do for i in "${!objets[@]}"; do [[ ${objets["$i"]} =~ $c ]] && matchObjets+=( "$i" ); done doneon peut faire sans la boucle sur les choix, en construisant une regex à partir de la variable
choix...
Re-merci,
J'ai pensé aux tableaux associatifs mais le schéma étant répétitif j'ai pensé qu'il serait plus simple de manipuler un tableau indicé.
Désolé : en voulant simplifier ma question j'ai oublié la moitié du problème.
Chaque "crit" peut prendre plusieurs valeurs, par exemple :
crit1 : les lettres de a à z
crit2 : une couleur, bleu, rouge, jaune, blanc, noir
crit3 : un chiffre de 1 à 9
Je recherche tous les objets qui correspondent à 1, 2 ou 3 critère(s).
Par exemple :
- tous les objets "jaune"
- ou tous les objets "blanc" et "h"
- ou tous les objets "rouge" et "8" et "g"
Je veux seulement les afficher.
J'ai pensé aux tableaux associatifs mais le schéma étant répétitif j'ai pensé qu'il serait plus simple de manipuler un tableau indicé.
Désolé : en voulant simplifier ma question j'ai oublié la moitié du problème.
Chaque "crit" peut prendre plusieurs valeurs, par exemple :
crit1 : les lettres de a à z
crit2 : une couleur, bleu, rouge, jaune, blanc, noir
crit3 : un chiffre de 1 à 9
Je recherche tous les objets qui correspondent à 1, 2 ou 3 critère(s).
Par exemple :
- tous les objets "jaune"
- ou tous les objets "blanc" et "h"
- ou tous les objets "rouge" et "8" et "g"
Je veux seulement les afficher.
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
Modifié le 27 janv. 2019 à 01:19
Modifié le 27 janv. 2019 à 01:19
pas de problème : plusieurs tabloAsso ;)
mais, bon, il te reste quand même du boulot. ;)
#!/bin/bash declare -A lettre couleur chiffre critR declare -i nbCrit match objets=( objet_1 objet_2 objet_3 objet_n ) lettre["objet_1"]="c" couleur["objet_1"]="jaune" chiffre["objet_1"]=7 #etc for i in lettre couleur chiffre do read -p "critère $((++n)): $i: " critR["$i"] test -n "${critR["$i"]}" && nbCrit+=1 done for o in "${objets[@]}" do for c in critR do test -n "${critR["$c"]}" && test "${lettre["$o"]}" = "${critR["$c"]}" && match+=1 done ((match==nbCrit)) && echo "$o" donej'espère qu'on aura une bonne note.
mais, bon, il te reste quand même du boulot. ;)