Bash Script for Generating All Permutations of a String
This script generates all possible permutations of a given string. It uses recursion to compute the permutations.
Script Explanation
The script defines a function permute
that takes two arguments: str
(the string to permute) and prefix
(the prefix for the permutations). It generates permutations by removing characters one by one and recursively calling itself with the remaining characters.
Script
#!/bin/bash
# Function to generate permutations
permute() {
local str="$1"
local prefix="$2"
# If the string is empty, print the permutation
if [ -z "$str" ]; then
echo "$prefix"
else
# Loop through the string and generate permutations
for (( i=0; i<${#str}; i++ )); do
# Extract the character at position i
local char="${str:$i:1}"
# Form the remaining string
local remaining="${str:0:i}${str:i+1}"
# Recursive call to permute the remaining string
permute "$remaining" "$prefix$char"
done
fi
}
# Main script
if [ "$#" -ne 1 ]; then
echo "Usage: $0 "
exit 1
fi
input_string="$1"
permute "$input_string" ""
How to Run the Script
1. Save the script to a file, for example, permute.sh
.
2. Make the script executable: chmod +x permute.sh
3. Run the script with a string argument: ./permute.sh your_string
Example: ./permute.sh abc
Output
The script will print all permutations of the given string to the terminal.
Explanation of the Script
- Function Definition:
permute()
: This function takes two arguments:str
: The string to permute.prefix
: The prefix used to build up permutations.
- It recursively generates permutations by removing one character at a time from
str
and adding it toprefix
.
- Base Case:
- When
str
is empty, it printsprefix
, which is a complete permutation.
- When
- Recursive Case:
- For each character in
str
, it forms a new string (remaining
) excluding the current character and recursively callspermute
with this new string and the updatedprefix
.
- For each character in
- Main Script:
- Checks if exactly one argument is provided.
- Calls
permute
with the input string and an empty prefix.
- Usage:
- Save the script, make it executable, and run it with a string to get all permutations.