2013-08-12 37 views
17

Có cách nào để có được kích thước của mảng kết hợp trong bash:Bash mảng kết hợp kích thước

declare -A array 

... mà không lặp lại thông qua các yếu tố?

Kích thước sở thích là cả hai: chỉ số lượng phần tử và số lượng bộ nhớ mà nó tiêu thụ?

Trả lời

23

${#array[@]} sẽ trả về kích thước của mảng.

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

oh đúng, hoàn toàn quên, cảm ơn bạn. Bất kỳ ý tưởng về tiêu thụ tài nguyên khi mảng trở thành kích thước đáng kể? – wick

+1

@wick Tôi không nghĩ rằng bạn có thể xác định mức tiêu thụ tài nguyên. Hãy xem xét một cách tiếp cận thay thế nếu mảng của bạn đang trở thành thực sự * lớn *. – devnull

+0

Tham khảo: http://www.tldp.org/LDP/abs/html/parameter-substitution.html (cuộn xuống * Độ dài biến đổi/Loại bỏ chuỗi con *). –

10

Bạn có thể sử dụng ${#array[@]} để nhận số lượng phần tử.

Tôi không nghĩ rằng có thể nhận được lượng bộ nhớ mà nó tiêu thụ.