O'Reilly logo

Shell Scripting: Expert Recipes for Linux, Bash, and More by Steve Parker

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required