Bash Programming

1. Indexed Arrays

instruments=("piano" "flute" "guitar" "oboe")

We can alternatively use declare -a followed by the array name to explicitly define it.

declare -a instruments=("piano" "flute" "guitar" "oboe")

Array values can also be set by index. Let’s insert trumpet at the 6th6th index in our instruments array.

instruments[6]="trumpet"

Let’s take a look at all of the elements in our array using the @ symbol.

echo ${instruments[@]}

for i in {0..6}; do echo "$i: ${instruments[$i]}"; done
0: piano
1: flute
2: guitar
3: oboe
4:
5:
6: trumpet

2. Associative Arrays

You can create associative arrays to specify two values instead of just one. We can do this by using declare -A followed by the array name.

declare -A student
student[name]=Rodney
student["area of study"]="Systems Administration"

To use or access a key with spaces, it must be surrounded in quotes.

echo ${student[name]} is majoring in ${student["area of study"]}.

Discovery 1

**2. Check if the file thisisascript.txt has been modified since it was last read and echo the results.

💡 Solution: The -N option returns True if a specified file has been modified since it was last read. [ -N thisisascript.txt ]; echo $?


Discovery 2

**1. Assign an indexed array called tempo containing the values below:

We can do this a few ways. We can declare the array first, then populate each index explicitly.

declare -a tempo
tempo[0]=Lento
tempo[1]=Largo
tempo[2]=Adagio
...

We can also assign items to the array using compound assignments

tempo=(Lento, Largo, Adagio, Andante, Moderato, Vivace, Presto)

**2. Display all of the elements of tempo quoted separately, then display the elements quoted as a single string.

💡 Solution

We can display all elements of the array quoted separately using @

echo ${tempo[@]}

The * character displays the elements as a single quote.

echo ${tempo[*]}

**3. Display indices 2 through 5 of the tempo array.

💡 Solution

We can print a range of indices using the format below.

echo ${tempo[@]:2:5}

**4. Declare an associative array called BPM containing the following string indices and values.

We can use declare -A to declare an associative array.

declare -A BPM
BPM=( [Lento]=40 [Largo]=45 [Adagio]=55 [Andante]=75, [Moderato]=95, [Vivace]=135, [Presto]=175 )

**5. Add the following string:value pair to the beginning of the BPM array.

We can add this item to the beginning of the array using the following syntax.

BPM=({[Grave]=35 ${BPM[@]})

💡 NOTE : -a is for indexed while -A is for associative

Last updated