J'ai un tableau associatif qui agit comme un double tableau habituel.Obtention de la longueur d'une partie d'un tableau associatif (double) dans Bash
La structure est similaire à celle-ci: [[0,1], [0,1,2]]. Code:
declare -A array
array[0,0]=0
array[0,1]=1
array[1,0]=0
array[1,1]=1
array[1,2]=2
Comment puis-je obtenir des longueurs de tableau [0] et tableau [1]? Dans cet exemple: 2 et 3.
Merci.
P.S. J'ai essayé de rechercher des doublons. Sans succès. Et si ce n'est pas clair: je ne connais pas la longueur du tableau.
La réponse a été choisie après un test d'efficacité. Voici exemple de fonction basée sur @ RenaudPacalet de réponse:
function getLength() {
local k=$(eval "echo \${!$1[@]}")
local re="(\<$2,[0-9])"
echo $k | grep -Eo $re | wc -l
}
Exemple d'utilisation: getLength array 1
renvoie 3 dans le cas de cette question. Gardez à l'esprit que l'utilisation de $(eval "echo \${!$1[@]}")
est beaucoup plus lente que ${!array[@]}
.
" qui agit comme si c'était un double tableau habituel "Non, ça ne fonctionne pas, ça * agit toujours comme un tableau associatif. –
echo $ {# array [@]} – py9
@Ignacio Vazquez-Abrams, je veux dire qu'il rappelle de double tableau. Pas d'actes, si vous voulez :) – MOPO3OB