Case inside case?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Case inside case?
# 1  
Old 11-03-2009
Case inside case?

Im new to unix and shell scripting. I am required to write a program and im in the process of creating a menu system. I have my main menu but i want to be able to select an option that takes me onto another menu. I have tried doing this with the case statement with no luck so far. Wondering if it is possible or if there is another way i should be doing it?

Thanks.
# 2  
Old 11-03-2009
This can get long and dull, but I often use this kind of thing for basic menu-type stuff:

Code:
clear
function main {
  echo "Please choose:

    1.  Do Something
    2.  Do something else
    3.  Exit"

    while true; do
      read SELECT
      case "$SELECT" in
        1) SELECT=func_Something;;
        2) SELECT=func_Something_else;;
        3) SELECT=exit;;
        *) echo Invalid selection.; continue
      esac
      break
    done
}

function func_Something {
  echo "In $0

    Please choose:

    1.  Do Something More
    2.  Do something More else
    3.  Exit"

  while true; do
    read SELECT
    case "$SELECT" in
      1) SELECT=func_SomethingMore;;
      2) SELECT=func_Something_More_else;;
      3) SELECT=exit;;
      *) echo Invalid selection.; continue
    esac
    break
  done
}

function func_Something_else {
  echo "in $0

  Doing something else"
  return 1
}

# ... write a function for each possible value of $SELECT...

main

while test $? -eq 0; do
  $SELECT
done

# 3  
Old 11-03-2009
This seems to work in korn: -

Code:
print "1) sub menu"
print "2) nothing"

while true; do
  read SELECT
  case $SELECT in
    1)    print "a) option a"
          print "b) option b"
          while read SELECT2;do
            case $SELECT2 in
              "a") print "A selected";;
              "b") print "B selected";;
            esac
            break 2
          done;;
    2) print "2 selected";;
  esac
  break
done

Output

Code:
poweredge:/home/brad/forum/scratch>menus   
1) sub menu
2) nothing
1
a) option a
b) option b
b
B selected
poweredge:/home/brad/forum/scratch>menus   
1) sub menu
2) nothing
1
a) option a
b) option b
a
A selected

# 4  
Old 11-05-2009
Thanks for the replys, the function way seems a good way to go. Will give that a go.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Case inside While read File

Hi Experts, Need your guidance for case statement. I tried many way but no success yet.Now my existing code is doing something like below. Each Line of the input file contains one test case.#!/bin/bash FILE=$1 while read LINE; do do COMMAND done < $FILE Now I want to modify the code... (6 Replies)
Discussion started by: pradyumnajpn10
6 Replies

2. Shell Programming and Scripting

Change first letter of a word from lower case to upper case

Hi all, I am trying to find a way to change first letter in a word from lower case to upper case. It should be done for each first word in text or in paragraph, and also for each word after punctuation like . ; : ! ?I found the following command sed -i 's/\s*./\U&\E/g' $@ filenamebut... (7 Replies)
Discussion started by: georgi58
7 Replies

3. Shell Programming and Scripting

Nested case inside awk

please let me know if the below code could be written efficiently inside single awk case "$INP" in ksh) cat catalog | awk 'BEGIN {FS=",";} { print $2 } END {}' ;; pset) cat catalog | awk 'BEGIN {FS=",";} { print $3 } END {}' ;; dml) cat catalog | awk 'BEGIN {FS=",";} {... (2 Replies)
Discussion started by: cvsanthosh
2 Replies

4. Shell Programming and Scripting

Conversion from Upper Case to Lower Case Condition based

Hello Unix Gurus : It would be really appreciative if can find a solution for this . I have records in a file . I need to Capitalize the records based on condition . For Example i tried the following Command COMMAND --> fgrep "2000YUYU" /export/home/oracle/TST/data.dat | tr '' ''... (12 Replies)
Discussion started by: tsbiju
12 Replies

5. Shell Programming and Scripting

[Solved] Change Upper case to Lower case in C shell

Is there a command that can switch a character variable from UPPER case to lower case? like foreach AC ( ABC BCD PLL QIO) set ac `COMMAND($AC)` ... end Thanks a lot! (3 Replies)
Discussion started by: rockytodd
3 Replies

6. Shell Programming and Scripting

sed ignoring case for search but respecting case for subtitute

Hi I want to make string substitution ignoring case for search but respecting case for subtitute. Ex changing all occurences of "original" in a file to "substitute": original becomes substitute Origninal becomes Substitute ORIGINAL becomes SUBSTITUTE I know this a little special but it's not... (1 Reply)
Discussion started by: kmchen
1 Replies

7. Shell Programming and Scripting

data array needs to change upper case to lower case

Hi all, i have a data array as followes. ARRAY=DFSG345GGG ARRAY=234FDFG090 ARRAY=VDFVGBGHH so on.......... i need all english letters to be change to lower case. So i am expecting to see ARRAY=dfsg345ggg ARRAY=234fdfg090 ARRAY=vdfvgbghh so on........ If i have to copy this data in... (8 Replies)
Discussion started by: usustarr
8 Replies

8. Shell Programming and Scripting

Script needed to select and delete lower case and mixed case records

HELLO ALL, URGENTLY NEEDED A SCRIPT TO SELECT AND DELETE LOWER AND MIXED CASE RECORDS FROM A COLUMN IN A TABLE. FOR EXAMPLE : Table name is EMPLOYEE and the column name is CITY and the CITY column records will be: Newyork washington ... (1 Reply)
Discussion started by: abhilash mn
1 Replies

9. UNIX for Dummies Questions & Answers

lower case to upper case string conversion in shell script

How can convert a Lower case variable value to an upper case in the kron shell script. (3 Replies)
Discussion started by: dchalavadi
3 Replies
Login or Register to Ask a Question