Working with arrays

An array is a list of variables. For example, we can create an array FRUIT, which will contain many fruit names. The array does not have a limit on how many variables it may contain. It can contain any type of data. The first element in an array will have the index value as 0:

student@ubuntu:~$ FRUITS=(Mango Banana Apple)
student@ubuntu:~$ echo ${FRUITS[*]}
Mango Banana Apple
student@ubuntu:~$ echo $FRUITS[*]
Mango[*]
student@ubuntu:~$ echo ${FRUITS[2]}
Apple
student@ubuntu:~$ FRUITS[3]=Orange
student@ubuntu:~$ echo ${FRUITS[*]}
Mango Banana Apple Orange

Creating an array and initializing it

You will learn about creating an array in the Bash shell.

If the array name is FRUIT, then we can create an array as follows:

FRUIT[index]=value

Index is the integer value. It should be 0 or any positive integer value.

We can also create an array as follows:

$ declare -a array_name
$ declare -a arrayname=(value1 value2 value3)

Example:

$ declare -a fruit=('Mango' 'Banana' 'Apple' 'Orange' 'Papaya')
$ declare -a array_name=(word1 word2 word3 ...)
$ declare -a fruit=( Pears Apple Mango Banana Papaya )
$ echo ${fruit[0]}
Pears
$ echo ${fruit[1]}
Apple
$ echo "All the fruits are ${fruit[*]}"
    All the fruits are Pears Apple Mango Banana Papaya
$ echo "The number of elements in the array are ${#fruit[*]}"
    The number of elements in the array are 3
$ unset fruit  or unset ${fruit[*]}

Accessing array values

Once we have initialized an array, we can access it as follows:

${array_name[index]}

We will create the script array_01.sh as follows:

#!/bin/bash

FRUIT[0]="Pears"
FRUIT[1]="Apple"
FRUIT[2]="Mango"
FRUIT[3]="Banana"
FRUIT[4]="Papaya"
echo "First Index: ${FRUIT[0]}"
echo "Second Index: ${FRUIT[1]}"

output:

$ chmod +x array_01.sh
$./array_01.sh
First Index: Pears
Second Index: Apple

To display all the items from the array, use the following commands:

${FRUIT[*]}
${FRUIT[@]}

Create an array_02.sh script as follows:

#!/bin/bash
FRUIT[0]="Pears"
FRUIT[1]="Apple"
FRUIT[2]="Mango"
FRUIT[3]="Banana"
FRUIT[4]="Papaya"
echo "Method One : ${FRUIT[*]}"
echo "Method Two : ${FRUIT[@]}"

Output:

$ chmod +x array_02.sh
$./ array_02.sh
Method One : Pears Apple Mango Banana Papaya
Method Two : Pears Apple Mango Banana Papaya

Let's see few more examples:

$ city[4]=Tokyo

The fourth member of the array, city, is being assigned Tokyo. Since it is the only element in the array, array the size will be 1.

$ echo ${city[*]}
Tokyo

The size of the array city is 1, since any other member of the array is not yet initialized.

${city[*]} will display the only element of the array city.

$ echo ${city[0]}

city[0] has no value, and neither does city[1] and city[2].

$ echo ${city[4]}
Tokyo

city[4] has the name of city as Tokyo.

$ countries=(USA  [3]=UK  [2]=Spain)

The array countries are being assigned USA at index 0, UK at index 3, and Spain at index 2. We can observe here that it does not matter in which sequence we are initializing the members of the array. They need not be in same sequence.

$ echo ${countries[*]}
USA Spain UK
$ echo ${countries[0]}
USA

The first element of the countries array is printed.

$ echo ${countries[1]}

There is nothing stored in countries [1].

$ echo ${countries[2]}
Spain

The third element of the countries array, countries [2], was assigned Spain.

$ echo ${countries[3]}
UK

The fourth element of the countries array, countries [3], was assigned UK.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset