Bash Iterate Over Characters in String


Bash Iterate Over Characters in String

In Bash scripting, iterating over characters in a string is useful for various string manipulation tasks.


Syntax

for (( i=0; i<${#string}; i++ )); do
    char="${string:$i:1}"
    # commands with $char
done

The basic syntax involves using a for loop to iterate over the length of the string, extracting each character using ${string:$i:1}, where i is the index.


Example Bash Iterate Over Characters

Let's look at some examples of how to iterate over characters in a string in Bash:

1. Print Each Character in a String

This script iterates over each character in the string stored in the variable str and prints each character.

#!/bin/bash

str="Hello, World!"
for (( i=0; i<${#str}; i++ )); do
    char="${str:$i:1}"
    echo "$char"
done

In this script, the variable str is assigned the value 'Hello, World!'. The for loop iterates over each character in the string. The character at index i is extracted using ${str:$i:1} and stored in the variable char. The script then prints each character.

Print each character in a string in Bash

2. Count Vowels in a String

This script iterates over each character in the string stored in the variable str and counts the number of vowels.

#!/bin/bash

str="Hello, World!"
vowel_count=0
for (( i=0; i<${#str}; i++ )); do
    char="${str:$i:1}"
    if [[ "$char" =~ [AEIOUaeiou] ]]; then
        ((vowel_count++))
    fi
done
echo "Number of vowels: $vowel_count"

In this script, the variable str is assigned the value 'Hello, World!'. The for loop iterates over each character in the string. The character at index i is extracted using ${str:$i:1} and stored in the variable char. The if statement checks if the character is a vowel using a regular expression. If true, the vowel count is incremented. The script then prints the number of vowels.

Count vowels in a string in Bash

3. Reverse a String

This script iterates over each character in the string stored in the variable str and constructs the reversed string.

#!/bin/bash

str="Hello, World!"
reversed_str=""
for (( i=${#str}-1; i>=0; i-- )); do
    char="${str:$i:1}"
    reversed_str+="$char"
done
echo "Reversed string: $reversed_str"

In this script, the variable str is assigned the value 'Hello, World!'. The for loop iterates over each character in the string in reverse order. The character at index i is extracted using ${str:$i:1} and stored in the variable char. The character is then appended to reversed_str. The script then prints the reversed string.

Reverse a string in Bash

Conclusion

Iterating over characters in a string in Bash is a fundamental task for character-by-character string manipulation in shell scripting. Understanding how to iterate over characters can help you manage and manipulate strings effectively in your scripts.