2013-08-12 24 views
17

C'è un modo per ottenere dimensioni di array associativo in bash:Bash dimensioni array associativo

declare -A array 

... senza l'iterazione attraverso gli elementi?

Le dimensioni dell'interesse sono entrambe: solo il numero di elementi e la quantità di memoria che consuma?

risposta

23

${#array[@]} restituirebbe la dimensione dell'array.

$ declare -A array 
$ array[foo]='something' 
$ array[bar]='blah' 
$ array[42]='nothing' 
$ echo ${#array[@]} 
3 
+0

oh giusto, totalmente dimenticato, grazie. Qualche idea sul consumo di risorse quando l'array diventa di dimensioni sostanziali? – wick

+1

@wick Non penso che tu possa determinare il consumo di risorse, però. Considerare un approccio alternativo se i tuoi array stanno diventando davvero * enormi *. – devnull

+0

Riferimento: http://www.tldp.org/LDP/abs/html/parameter-substitution.html (scorrere verso il basso fino a * Lunghezza variabile/rimozione sottostringa *). –

10

È possibile utilizzare ${#array[@]} per ottenere il numero di elementi.

Non penso sia possibile ottenere la quantità di memoria che consuma comunque.

Problemi correlati