DEV Community

abbazs
abbazs

Posted on • Edited on

array, dictionary, for and while loops to score 25 marks in System Commands OPPE

Introduction

This guide covers concepts focusing on arrays, loops, file operations, arithmetic operations, and string manipulation.

1. Arrays in Bash

Arrays in Bash are zero-indexed lists of values. There are several ways to declare and initialize arrays.

Declaring and Initializing Arrays

  1. Using declare: ```bash

declare -a my_array

 2. Implicit declaration with initialization: ```bash my_array=(apple banana cherry) 
Enter fullscreen mode Exit fullscreen mode
  1. Empty array declaration: ```bash

my_array=()

 4. Declaring with specific indices: ```bash my_array=([0]="apple" [1]="banana" [5]="cherry") 
Enter fullscreen mode Exit fullscreen mode
  1. Declaring empty and adding elements: ```bash

my_array=()
my_array+=("apple")
my_array+=("banana")

 6. Declaring a read-only array: ```bash declare -ar my_readonly_array=(apple banana cherry) 
Enter fullscreen mode Exit fullscreen mode

Accessing and Manipulating Arrays

 # Access elements echo ${my_array[0]} # Output: apple # Get all elements echo ${my_array[@]} # Output: apple banana cherry # Get array length echo ${#my_array[@]} # Output: 3 # Slicing an array echo ${my_array[@]:1:2} # Output: banana cherry (from index 1, take 2 elements) # Finding the indices of an array echo ${!my_array[@]} # Output: 0 1 2 (or 0 1 5 for the array with specific indices) 
Enter fullscreen mode Exit fullscreen mode

2. Loops in Bash

Bash provides several types of loops for repetitive tasks.

For Loops

  1. Traditional for loop: ```bash

for i in 1 2 3 4 5
do
echo $i
done

 2. C-style for loop: ```bash for ((i=0; i<5; i++)) do echo $i done 
Enter fullscreen mode Exit fullscreen mode
  1. For loop with array: ```bash

fruits=(apple banana cherry)
for fruit in "${fruits[@]}"
do
echo $fruit
done

 4. For loop with command substitution: ```bash for file in $(ls) do echo $file done 
Enter fullscreen mode Exit fullscreen mode

While Loops

Basic while loop syntax:

 count=1 while [ $count -le 5 ] do echo "Count is: $count" ((count++)) done 
Enter fullscreen mode Exit fullscreen mode

3. File Operations

Reading from and writing to files is a common task in Bash scripting.

Reading a File Line by Line

 while IFS= read -r line do echo "Line: $line" done < "input.txt" 
Enter fullscreen mode Exit fullscreen mode

Writing to a File

 echo "Hello, World!" > output.txt echo "Appending this line" >> output.txt 
Enter fullscreen mode Exit fullscreen mode

4. Arithmetic Operations in Bash

Bash offers various methods for arithmetic operations:

 # Using let let result=5+3 echo $result # Output: 8 # Using (( )) ((result = 5 + 3)) echo $result # Output: 8 # Using $[ ] result=$[5 + 3] echo $result # Output: 8 # Using expr (note the spaces) result=$(expr 5 + 3) echo $result # Output: 8 
Enter fullscreen mode Exit fullscreen mode

5. String Manipulation

String Case Checking

This example checks if given strings start with uppercase or lowercase letters:

 #!/bin/bash declare -a upper declare -a lower words=("Hello" "world" "BASH" "script" "ARRAY" "example") for word in "${words[@]}" do if [[ $word == [[:upper:]]* ]] then upper+=("$word") elif [[ $word == [[:lower:]]* ]] then lower+=("$word") fi done echo "Uppercase words: ${upper[@]}" echo "Lowercase words: ${lower[@]}" 
Enter fullscreen mode Exit fullscreen mode

Advanced Pattern Matching

This script demonstrates number detection and pattern matching:

 #!/bin/bash declare -a num_var declare -a userid_var declare -a other_var strings=("123" "abc" "456" "1234abcd56" "789xyz" "2023user01" "hello123") for str in "${strings[@]}" do if [[ $str =~ ^[0-9]+$ ]] then # String is a number num_var+=("$str") elif [[ $str =~ ^[0-9]{4}[a-z]{4}[0-9]{2}$ ]] then # String matches pattern \d{4}[a-z]{4}\d{2} userid_var+=("$str") else # String doesn't match any specific category other_var+=("$str") fi done echo "Numbers: ${num_var[@]}" echo "User IDs: ${userid_var[@]}" echo "Other strings: ${other_var[@]}" 
Enter fullscreen mode Exit fullscreen mode

6. Comprehensive Example: File Processing and Data Categorization

This example combines file reading, loops, and string manipulation to categorize data from a file:

 #!/bin/bash # Initialize arrays for different types of data declare -a names declare -a numbers declare -a emails declare -a mixed # Read the file line by line while IFS= read -r line do # Check if line is a name (contains only letters and spaces) if [[ $line =~ ^[[:alpha:][:space:]]+$ ]] then names+=("$line") # Check if line is a number elif [[ $line =~ ^[0-9]+$ ]] then numbers+=("$line") # Check if line is an email elif [[ $line =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$ ]] then emails+=("$line") # If it doesn't match any of the above, it's mixed content else mixed+=("$line") fi done < "data.txt" # Print the categorized data echo "Names: ${names[@]}" echo "Numbers: ${numbers[@]}" echo "Emails: ${emails[@]}" echo "Mixed Content: ${mixed[@]}" 
Enter fullscreen mode Exit fullscreen mode

This script reads a file named data.txt, categorizes each line based on its content, and stores it in the appropriate array.

Conclusion

This tutorial has covered essential Bash scripting concepts including:

  1. Array declaration and manipulation
  2. For and while loops
  3. File reading and writing operations
  4. Arithmetic operations
  5. String manipulation and pattern matching
  6. A comprehensive example combining multiple concepts

Top comments (0)