Creating Interactive Menus in Bash Scripts
In this guide, discover diverse examples of interactive menus in Bash scripts. From basic menus to menus with actions and validation, these examples offer insights into enhancing user experience and script functionality. Whether you're a beginner or an experienced Bash scripter, these examples provide valuable techniques for building robust and user-friendly scripts.
Basic Menu
#!/bin/bash
echo "Menu:"
echo "1. Option 1"
echo "2. Option 2"
echo "3. Option 3"
echo "4. Exit"
read -p "Enter your choice: " choice
case $choice in
1)
echo "You selected Option 1"
# Code for Option 1
;;
2)
echo "You selected Option 2"
# Code for Option 2
;;
3)
echo "You selected Option 3"
# Code for Option 3
;;
4)
echo "Exiting..."
exit 0
;;
*)
echo "Invalid choice"
;;
esac
#!/bin/bash
show_menu() {
echo "Menu:"
echo "1. Option 1"
echo "2. Option 2"
echo "3. Option 3"
echo "4. Exit"
}
process_choice() {
case $1 in
1)
echo "You selected Option 1"
# Code for Option 1
;;
2)
echo "You selected Option 2"
# Code for Option 2
;;
3)
echo "You selected Option 3"
# Code for Option 3
;;
4)
echo "Exiting..."
exit 0
;;
*)
echo "Invalid choice"
;;
esac
}
while true; do
show_menu
read -p "Enter your choice: " choice
process_choice $choice
done
Menu with Actions
#!/bin/bash
options=("Option 1" "Option 2" "Option 3" "Exit")
actions=("echo 'You selected Option 1'" "echo 'You selected Option 2'" "echo 'You selected Option 3'" "exit 0")
echo "Menu:"
for i in "${!options[@]}"; do
echo "$((i+1)). ${options[i]}"
done
read -p "Enter your choice: " choice
if [[ $choice =~ ^[0-9]+$ ]] && (( choice >= 1 && choice <= ${#options[@]} )); then
eval ${actions[choice-1]}
else
echo "Invalid choice"
fi
Menu with Validation
#!/bin/bash
valid_choices=("1" "2" "3" "4")
# Display menu
echo "Menu:"
echo "1. Option 1"
echo "2. Option 2"
echo "3. Option 3"
echo "4
. Exit"
read -p "Enter your choice: " choice
if [[ " ${valid_choices[*]} " == *" $choice "* ]]; then
case $choice in
1)
echo "You selected Option 1"
# Code for Option 1
;;
2)
echo "You selected Option 2"
# Code for Option 2
;;
3)
echo "You selected Option 3"
# Code for Option 3
;;
4)
echo "Exiting..."
exit 0
;;
esac
else
echo "Invalid choice"
fi