Menu Driven Bash Shell Script with Default Option

Hi All,

I have written a menu driven bash shell script.

Current Output is as below:

-------------------------------------
            Main Menu
-------------------------------------
[1] Option 1
[2] Option 2
[3] Option 3
[4] Option 4
[5] Exit
=====================================
Enter your menu choice [1-5]: 

I am able to run the functions by selecting the options 1 to 5 accordingly.

My requirement is to keep option 1 as a default option so whenever I press "Enter" it should select option 1 automatically instead of user input.

Required output :

-------------------------------------
            Main Menu
-------------------------------------
[1] Option 1
[2] Option 2
[3] Option 3
[4] Option 4
[5] Exit
=====================================
Enter your menu choice [1-5] [Default :1]: 

Current Shell Script Code:

#!/usr/bin/bash

# Menu Item

main_menu()
{

while :
do
	clear
	echo " "
	echo "-------------------------------------"
	echo "            Main Menu "
	echo "-------------------------------------"
	echo "[1] Option 1"
	echo "[2] Option 2"
	echo "[3] Option 3"
	echo "[4] Option 4"
	echo "[5] Exit"
	echo "====================================="
	echo "Enter your menu choice [1-5]: \c "
	read m_menu
	
	case "$m_menu" in

		1) option_1;;
		2) option_2;;
		3) option_3;;
		4) option_4;;
		5) exit 0;;
		*) echo "\nOpps!!! Please Select Correct Choice";
		   echo "Press ENTER To Continue..." ; read ;;
	esac
done
}

option_1()
{
  echo "option 1"
  echo "\nPress ENTER To Continue..."
    read
	return
}

option_2()
{
	echo "option 2"
	echo "\nPress ENTER To Continue..."
    read
	return
}

option_3()
{
	echo "option 3"
	echo "\nPress ENTER To Continue..."
    read
	return
}

option_4()
{
	echo "option 4"
	echo "\nPress ENTER To Continue..."
    read
	return
}

main_menu

Regards,
Kiran

Add:

"") option_1;;

Maybe you're interested in "dialog"(Needs to be installed first) too. dialog is text-based dialog.

See:
DIALOG � Script-driven curses widgets

exec 3>&1
RESULT=$(dialog --menu "Main Menu" 10 80 8 \
    1 "Option 1" \
    2 "Option 2" \
    3 "Option 3" \
        2>&1 >&3)
exec 3>&-

case "$RESULT" in 
 ...
esac
1 Like

Using bash , you might be interested in the select command provided?

1 Like

Thanks All. I have modified the script as required. Got the expected results now.