Array Handling in Shell Scripts: Creating and Reversing Arrays

Shell Scripting @ Freshers.in

Arrays are a fundamental data structure in shell scripting that allow you to store and manipulate multiple values. In this comprehensive guide, we will dive into array handling in shell scripts, focusing on creating arrays, populating them with numbers, and printing the elements in reverse order. We’ll provide practical examples and outputs to help you grasp the concepts effectively. Arrays are powerful data structures in shell scripting that enable you to work with collections of values. In this guide, we’ve covered the basics of array creation, element access, and array reversal using practical examples.

Introduction to Arrays in Shell Scripts

An array is a collection of values, each identified by an index or a key. In shell scripting, arrays can store a variety of data types, including numbers, strings, or a mix of both. They are useful for organizing and processing data efficiently.

Creating an Array

In shell scripting, you can create an array by declaring it and populating it with values. Let’s start by creating an array of 5 numbers:

#!/bin/bash
# Declare an array with 5 elements
numbers=(10 20 30 40 50)

In this example, we’ve created an array named numbers containing 5 integer values.

Printing Array Elements

To access and print array elements, you use the ${array[index]} notation, where array is the name of the array, and index is the position of the element (starting from 0). Let’s print the elements of the numbers array:

#!/bin/bash
# Declare an array with 5 elements
numbers=(10 20 30 40 50)
# Print array elements
echo "Array elements:"
echo "${numbers[0]}"  # Print the first element
echo "${numbers[1]}"  # Print the second element
echo "${numbers[2]}"  # Print the third element
echo "${numbers[3]}"  # Print the fourth element
echo "${numbers[4]}"  # Print the fifth element

When you run this script, it will output:

Array elements:
10
20
30
40
50

Reversing an Array

To reverse the order of elements in an array, you can create a new array and populate it in reverse order. Here’s a script to reverse the numbers array and print the reversed elements:

#!/bin/bash
# Declare an array with 5 elements
numbers=(10 20 30 40 50)
# Calculate the array length
length=${#numbers[@]}
# Initialize a new array for the reversed elements
reversed=()
# Populate the reversed array
for ((i = $length - 1; i >= 0; i--)); do
  reversed+=("${numbers[i]}")
done
# Print the reversed array elements
echo "Reversed array elements:"
for element in "${reversed[@]}"; do
  echo "$element"
done

When you run this script, it will output:

Reversed array elements:
50
40
30
20
10

Array Manipulation with Loops

Looping constructs like for and while are commonly used for array manipulation in shell scripts. Let’s rewrite the script to reverse the numbers array using a for loop:

#!/bin/bash
# Declare an array with 5 elements
numbers=(10 20 30 40 50)
# Calculate the array length
length=${#numbers[@]}
# Initialize a new array for the reversed elements
reversed=()
# Populate the reversed array using a for loop
for ((i = $length - 1; i >= 0; i--)); do
  reversed+=("${numbers[i]}")
done
# Print the reversed array elements
echo "Reversed array elements:"
for element in "${reversed[@]}"; do
  echo "$element"
done

The output remains the same:

Reversed array elements:
50
40
30
20
10
Author: user