How To Find BASH Shell Array Length ( number of elements )
Q. How do I define array in a bash shell script? How do I find out bash array length (number of elements) while running a script using for shell loop?
A. Bash provides one-dimensional array variables. Any variable may be used as an array; the declare builtin will explicitly declare an array. There is no maximum limit on the size of an array, nor any requirement that members be indexed or assigned contiguously.
How do I define bash array?
Array can be defined using following syntax:
ArrayName=("element 1" "element 2" "element 3")
Define array called distro with 3 elements, enter:
distro=("redhat" "debian" "gentoo")
How do I reference any element in bash array?
Any element of an array may be referenced using following syntax:
${ArrayName[subscript]}
To print redhat i.e first element enter:
echo ${distro[0]} echo ${distro[2]} # will print gentoo
How do I find out bash shell array length?
You can easily find out bash shell array length using following syntax:
${#ArrayName[@]}
To print distro array length enter:
echo ${#distro[@]}
Sample output:
3
If subscript is @ or *, the word expands to all members of name. By prefixing # to variable you will find length of an array (i.e number of elements).
Putting it all together
A sample shell script to print array called NAMESERVERS:
#!/bin/bash # define array # name server names FQDN NAMESERVERS=("ns1.nixcraft.net." "ns2.nixcraft.net." "ns3.nixcraft.net.") # get length of an array tLen=${#NAMESERVERS[@]} # use for loop read all nameservers for (( i=0; i<${tLen}; i++ )); do echo ${NAMESERVERS[$i]} done
Sample output:
ns1.nixcraft.net. ns2.nixcraft.net. ns3.nixcraft.net.
E-mail
Print
Can't find an answer to your question? Contact us
Related Other Helpful FAQs:
Discussion on This FAQ
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: array name, bash array, bash array element, bash array length, bash array variables, BASH Shell, dimensional array, for loop, shell for loop



July 27th, 2008 at 4:47 pm
Nice one
July 28th, 2008 at 8:20 am
Excellent info.
August 5th, 2008 at 8:04 pm
how to clean the array? ;d
September 20th, 2008 at 12:18 pm
Hi!
I think that this example is bad.
I would do this without a block .
#!/bin/bash
NAMESERVERS=”ns1.nixcraft.net. ns2.nixcraft.net. ns3.nixcraft.net.”
for i in $NAMESERVERS; do
echo “$i”
done