Soit le code suivant :
#!/bin/bash
array1=("pi" "pas" "poux");
array2=("bim" "bam" "boom");
for ((i=0;i<${#array1[@]};++i));
do
echo "bim"
array3[$i]=$array2[$i];
done;
echo
echo ${array1[0]};
echo ${array1[1]};
echo ${array1[2]};
echo
echo ${array2[0]};
echo ${array2[1]};
echo ${array2[2]};
echo
echo ${array3[0]};
echo ${array3[1]};
echo ${array3[2]};
echo
echo ${#array1[@]};
echo ${#array2[@]};
echo ${#array3[@]};
Je comprends pas pourquoi ${array3[0]}, ${array3[1]} et ${array3[2]} renvoie :
bim[0]
bim[1]
bim[2]
Voici la sortie complète :
bim
bim
bim
pi
pas
poux
bim
bam
boom
bim[0]
bim[1]
bim[2]
3
3
3
Merci pour les explications (et oui je sais que bash est pas le meilleur moyen de manipuler des tableaux associatifs :/ Mais là c’est vraiment un question sur bash… J’espère qu’on va me fournir une réponse de qualité et que je pourrais me dire : « ah bah oui mais cest bien sûr, pourquoi n’y ai-je pas pensé ! »…
# boom bim[2] bim[2]
Posté par Benoît Sibaud (site web personnel) . Évalué à 6.
# Commentaire supprimé
Posté par Marotte ⛧ . Évalué à 1. Dernière modification le 25 août 2015 à 08:51.
Ce commentaire a été supprimé par l’équipe de modération.
# So… What ?
Posté par Marotte ⛧ . Évalué à 1. Dernière modification le 25 août 2015 à 08:51.
# explications plus longues ;o)
Posté par myou (site web personnel) . Évalué à 6. Dernière modification le 25 août 2015 à 22:41.
tu initialises array3 avec
soit en décomposant
$array2 et [ et $i et ]
$array2 vaut la première variable du tableau … soit "bim"
[ vaut [ ;o)
$i vaut 0 1 2 en fonction de la boucle
et ] vaut ]
donc tes sorties sont logiques
Maintenant si tu utilises
Tu devrais avoir ce que tu veux, enfin ce que tu imagines logique d'avoir.
Je préconise d'utiliser les {} meme quand c'est pas forcement nécessaire, cela évite de les oublier quand c'est utile ;o)
Pour les tableaux sous bash ne pas hésiter a lire : ABS en français
[^] # Re: explications plus longues ;o)
Posté par Marotte ⛧ . Évalué à 2.
Effectivement :)
Merci pour l'explication.
[^] # Re: explications plus longues ;o)
Posté par Michaël (site web personnel) . Évalué à 2. Dernière modification le 25 août 2015 à 22:40.
Un coup tu traduis «la valeur à la position 0 du tableau array3» par
$array3[0]
et un coup par${array3[0]}
… :)Tout à fait, cela permet aussi de facilement insérer les modificateurs de remplacement lorsqu'on en a besoin.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.