Sponsored Content
Full Discussion: Shell script menu problem
Top Forums Shell Programming and Scripting Shell script menu problem Post 302598846 by Corona688 on Wednesday 15th of February 2012 02:25:54 PM
Old 02-15-2012
Here's an example using select and the argument array to easily switch between many menus. The same code prints all the menus and reads all the replies using the select builtin.

We use the the $1 variable here to define which menu it's currently showing, which you can alter at will with the set -- and shift commands. You can easily use it like a stack, with [b]set -- nextmenu "$*"[b] pushing a menu to show next and shift popping a menu to return to the previous one.

But set -- will let you set menus in whatever arbitrary order you want, too.

Code:
#!/bin/bash

IFS="|" # Split menus on |, so we can have spaces in titles

# Use parameters as a stack.  $1 is the current menu.
# we can add with set -- again, or remove with 'shift'.
set -- main

while [ "$#" -gt 0 ]
do
        case "$1" in    # Look up the right options for the menu
        main)           OPTIONS="CH1|CH2|CH3|Q" ;;
        submenu1)       OPTIONS="A|B|C|Q"       ;;
        submenu2)       OPTIONS="D|E|F|Q"       ;;
        submenu3)       OPTIONS="X|Y|Z|Q"       ;;
        esac

        PS3=$'\n'"$1 menu: "    # Special variable controlling select prompt

        # Print menu, get reply
        select X in $OPTIONS
        do
                [ -z "$X" ] || break
        done

        # We treat Q specially, it returns to the previous menu.
        if [ "$X" = "Q" ]
        then
                shift           # Return to previous menu
                continue        # Go to top of loop
        fi

        case "$1" in
        main)
                case "$X" in
                CH1)    set -- submenu1 "$*"    ;;
                CH2)    set -- submenu2 "$*"    ;;
                CH3)    set -- submenu3 "$*"    ;;
                esac
                ;;

        submenu1)
                case "$X" in
                A)     # Switch to submenu2 by removing submenu1 before adding
                        shift
                        set -- submenu2 "$*"
                        ;;
                B)      ;;
                C)      ;;
                esac
                ;;

        submenu2)
                case "$X" in
                A)      ;;
                B)      ;;
                C)      ;;
                esac
                ;;

        submenu3)
                case "$X" in
                A)      ;;
                B)      ;;
                C)      ;;
                esac
                ;;

        *)      echo "Unknown menu $1, removing"
                shift
                ;;
        esac
done

echo "Menu list is empty, quitting" >&2


Last edited by Corona688; 02-15-2012 at 03:42 PM..
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unix Shell Script: With Menu Option

I am attempting to create a shell script with the following capaciblities: 1. Listed options to choice from 2. Use to perform awk statements 3. Print a report with the awk results My questions are 1. How do I select more than one file for option #5 and #6 2. How to I create an... (11 Replies)
Discussion started by: jroberson
11 Replies

2. Shell Programming and Scripting

Script menu problem

Hi there, I am new to Unix and at the moment I am trying to solve my assignment that is to create a script for the program to prompt user to type three codes, from user point of view it should be done by typing codes separating them by spaces. Then program displays a menu with these three... (2 Replies)
Discussion started by: Dannel
2 Replies

3. Shell Programming and Scripting

Shell script menu

hi guys, how would you do the following? I have a menu with 5 options in my shell script: 1. Run function 1 against files 2. Run function 2 against files 3. Run function 3 against files 4. Run function 4 against files 5. Run function 5 against files I'd like to be able to run multiple... (10 Replies)
Discussion started by: rich@ardz
10 Replies

4. UNIX for Dummies Questions & Answers

Menu Script problem

Im new to unix/linux and am having trouble with this one. My problem is when i enter 9 to exit it doesnt do so. also option 6 doesent display the time. Its getting to be frustrating. I know there are probably alot of bug in this bu these basic ones are really odd. #!bin/bash # until ... (3 Replies)
Discussion started by: christ.666
3 Replies

5. Shell Programming and Scripting

Menu using shell script

Hi, I need to have a shell script for the below need. 1. Menu with one heading and 4 options. 2. the heading and 4 options are taken from a file. File entry ====== Heading1|option1|option2|option3|option4| Heading2|option1|option2|option3|option4| 3. the user entries must be captured in... (9 Replies)
Discussion started by: umastinu
9 Replies

6. Shell Programming and Scripting

Execution Problem with dispalying file content using menu driven script

HI All.. below is my menu options script. in option 2,3 and 4 im giving input and they are saving into their respective text file. problem is when im trying to "cat" those files in options 7,8 and 9 im not getting the output. no respective file contents are displaying on screen. but if i... (1 Reply)
Discussion started by: saichand1985
1 Replies

7. Shell Programming and Scripting

A selection menu in a shell script

I'm writing a shell script and have a problem with selection when I issue the command, is there a way to automatically choose a selection number one after a selection menue appear Command 1-choice 2- choice 3-choice Thanks Sara (3 Replies)
Discussion started by: Sara_84
3 Replies

8. Shell Programming and Scripting

Menu shell script help

Hi All, I have written a shell script that show menu driven option. My requirement is that in the menu driven option i want to select multiple choice. i.e if i want to select 1 or 1,2 or 1,2,3 or 2,3 etc .... Can some one help me in that My script. while true; do echo " " ... (8 Replies)
Discussion started by: Nawrajesh
8 Replies

9. Shell Programming and Scripting

Automate the menu options using shell script

I have a menu option which will look as follows Select a menu option 1.change password 2.login as root user 3.show system version 4.quit Select> 1 please enter the new password: unix reenter the new password: unix press any key to enter (then displays again the menu options to enter the... (4 Replies)
Discussion started by: shivakumar6g
4 Replies

10. Shell Programming and Scripting

How to include menu based options in Shell script?

Hi Friends, I have a menu based tool which requires input/option to proceed further. How to make a shell script ? eg: menu looks like Get_data.sh to continue (y/n) : Here I need to key in "y" to proceed. I want to prepare a script which should consider option y. (5 Replies)
Discussion started by: suresh3566
5 Replies
All times are GMT -4. The time now is 09:27 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy