Accessing Arrays

The basic method for accessing the values of arrays is much the same as the first method shown of assigning values to arrays. The curly brackets are compulsory. If an index is omitted, the first element is assumed.

Accessing by Index

Reusing the numberarray array from earlier in this chapter, the following code adds some echo statements to display the values after the assignments. Note that the sparse array means that no numberarray[2] exists.

numberarray[0]=zero 
$ numberarray[1]=onenumberarray[3]=threeecho ${numberarray[0]}
zero
$ echo ${numberarray[2]}echo ${numberarray[3]}
three
$

If you try to access $numberarray[1] without the curly brackets, the shell will interpret $numberarray as the first element within numberarray, and [1] as a literal string. This results in the literal string zero[1] being returned, which is not what was wanted.

echo $numberarray[1]
zero[1]
$

Length of Arrays

Finding the number of elements in an array is very similar to finding the length of a regular variable. While ${#myvar} gives the length of the string contained in the $myvar variable, ${#myarray[@]} or ${#myarray[*]} returns the number of elements in the array. With a sparse array, this still only returns the number of actual elements assigned to an array, which is not the same thing as the highest index used by the array.

Note also that ${#myarray} returns the length of the string in ${myarray[0]} and not the number of elements in the $myarray array. To ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.