Visit Our UNIX and Linux User Community


Sub menu's


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sub menu's
# 15  
Old 01-15-2002
Ok, Jimbo I tried this, but didnt work, can u see ne errors or mistakes?

Also, after I got to a sub menu how do I get it to return to a the main menu, I left that part blank??

amenu () {

clear
echo `date`
echo
echo "\t\t\tMy Personal Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Directory display"
echo "\t\t\t 2. Current Activity"
echo "\t\t\t 3. Who is logged on"
echo "\t\t\t 4. File functions"
echo "\t\t\t 5. Directory functions"
echo "\t\t\t 0. Exit"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}


DirectoryDisplay () {
ls -l|more
PressEnter
}

CurrentActivity () {
ps -ef|more
PressEnter
}

WhoIsLoggedOn () {
who|more
PressEnter
}

Filefunctions () {
amenu () {
clear
echo "\t\t\tFile functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Delete file"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}

Delete () {
print -n "Enter file name to be deleted: "
read name
if [ -f $name ]
then
echo "file: $name has been deleted"
else
echo "this is not a file"
fi
}

while true
do

amenu

read answer

case $answer in
1) Delete ;;

0) break ;; (HOW DO I GET IT TO RETURN TO MAIN MENU????)
esac

done
clear
}

Directoryfunctions () {
amenu () {

clear
echo "\t\t\tDirectory functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Delete file"
echo "\t\t\t 2. Change directory
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}

Delete () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
echo "directory: $name has been deleted"
else
echo "this is not a directory"
fi
}

Changedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
cd $name
else
echo "$name is not a directory"
}

while true
do

amenu

read answer

case $answer in
1) Delete ;;
2) Changedirectory ;;

0) break ;; (HOW DO I GET IT TO RETURN TO MAIN MENU????)
esac

done
clear
}


while true
do

amenu

read answer

case $answer in
1) DirectoryDisplay ;;
2) CurrentActivity ;;
3) WhoIsLoggedOn ;;
4) Filefunctions ;;
5) Directoryfunctions ;;

0) break ;;
esac

done
clear

Last edited by Makaveli.2003; 01-15-2002 at 08:11 PM..
# 16  
Old 01-18-2002
THIS IS WHAT IVE TRIED BUT IT DIDNT WORK, CAN NE1 HELP!!?? IVE HIGHLIGHTED THE BITS WHERE I MIGHT B GOIN WRONG IN RED, CAN NE SPOT NE MISTAKES?? THX IN ADVANCE 4 NE HELP

amenu () {

clear
echo `date`
echo
echo "\t\t\tMy Personal Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Directory display"
echo "\t\t\t 2. Current Activity"
echo "\t\t\t 3. Who is logged on"
echo "\t\t\t 4. File functions"
echo "\t\t\t 5. Directory functions"
echo "\t\t\t 0. Exit"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}


DirectoryDisplay () {
ls -l|more
PressEnter
}

CurrentActivity () {
ps -ef|more
PressEnter
}

WhoIsLoggedOn () {
who|more
PressEnter
}

Filefunctions () {
amenu () {
clear
echo "\t\t\tFile functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Delete file"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x }


Delete () {
print -n "Enter file name to be deleted: "
read name
if [ -f $name ]
then
rm $name
echo "file: $name has been deleted"
else
echo "this is not a file"
fi
}

while true
do

amenu

read answer

case $answer in
1) Delete ;;

0) break ;; (HOW DO I GET IT TO RETURN TO MAIN MENU????)
esac

done
clear
}


Directoryfunctions () {
amenu () {

clear
echo "\t\t\tDirectory functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Delete file"
echo "\t\t\t 2. Change directory
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}

Delete () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
echo "directory: $name has been deleted"
else
echo "this is not a directory"
fi
}

Changedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
cd $name
else
echo "$name is not a directory"
}

while true
do

amenu

read answer

case $answer in
1) Delete ;;
2) Changedirectory ;;

0) break ;; (HOW DO I GET IT TO RETURN TO MAIN MENU????)
esac

done
clear
}

while true
do

amenu

read answer

case $answer in
1) DirectoryDisplay ;;
2) CurrentActivity ;;
3) WhoIsLoggedOn ;;
4) Filefunctions ;;
5) Directoryfunctions ;;

0) break ;;
esac

done
clear
# 17  
Old 01-18-2002
echo "\t\t\t 2. Change directory
needs an ending double-quote.

read x }
should be two lines

Filefunctions () {
should not be followed with
amenu () {

You should have only one while true loop for amenu.

You should have only one of each procedure defined. For example, you have PressEnter () defined more than once.

To get a sub-menu to return to your main loop, simply fall out the end of that procedure. If you run my example menu that I posted earlier in this thread, you will see that after the sub-menus have executed, they do not do an exit, return, break or nothing. They just fall out the bottom and control returns to the main loop, which repaints the screen with the main menu.
Jimbo
# 18  
Old 01-18-2002
Jimbo, I tried ur script but it didnt have any sub menu's, well I altered my script and displays as I hoped it would, but when i get the sub menu's up (select options 2 or 3, on first menu displayed) but doesn't function, here is my script: I have tried a few different things but dont seem to b getting anywhere.

amenu () {
clear
echo "\t\t\tMy Personal Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Directory display"
echo "\t\t\t 2. File functions"
echo "\t\t\t 3. Directory functions"
echo
echo "\t\t\t 0. Exit"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}

DirectoryDisplay () {
ls -l|more
PressEnter
}

Filefunctions () {
clear
echo "\t\t\tFile functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 5. Delete file"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
PressEnter
}

Deletefile () {
print -n "Enter file name to be deleted: "
read name
if [ -f $name ]
then
rm $name
echo "file: $name has been deleted"
else
echo "this is not a file"
fi
PressEnter
}

Directoryfunctions () {
clear
echo "\t\t\tDirectory functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 6. Delete directory"
echo "\t\t\t 7. Change directory"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then press ENTER ;
PressEnter
}

Deletedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
echo "directory: $name has been deleted"
else
echo "this is not a directory"
PressEnter
}

Changedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
cd $name
else
echo "$name is not a directory"
}

while true
do

amenu

read answer

case $answer in
1) DirectoryDisplay ;;
2) Filefunctions ;;
3) Directoryfunctions ;;
5) Deletefile ;;
6) Deletedirectory ;;
7) Changedirectory ;;

0) break ;;
esac

done
clear
# 19  
Old 01-20-2002
My demo menu does have sub-menus, but they are not full-blown working sub-menus, hence the "Directory Functions menu processing goes here" display. At time of post, I was just wanting to demo how a sub-menu would be called from a main loop, not what the sub-menu would need to do.

Your main case statement should not try to process the replies from the sub-menus. That case statement, on a single execution, will process only a single response, and that will be a main menu response.

Each sub-menu, after painting the screen, needs to do its own read/case processing, then fall out the bottom or do a return. Follow your script and you will see that it is executing as coded: main loop calls Filefunctions, which paints the screen, calls PressEnter (no read has been done yet), then falls back to the main loop which starts the next main menu cycle.

You could code the main loop in such a way that its read/case processing would handle the responses from all main/sub menus. But this would not be a typical approach, and not as easy to maintain as the more modular approach.

Also, Deletedirectory and Changedirectory have if-statements that are not closed out.
Jimbo
# 20  
Old 01-20-2002
I tried a few things with my script Jimbo but Im not getting any where, Jimbo please check ur private messages, and post ur reply??
# 21  
Old 01-21-2002
Quote:
Originally posted by Jimbo
Your main case statement should not try to process the replies from the sub-menus. That case statement, on a single execution, will process only a single response, and that will be a main menu response.

Each sub-menu, after painting the screen, needs to do its own read/case processing, then fall out the bottom or do a return. Follow your script and you will see that it is executing as coded: main loop calls Filefunctions, which paints the screen, calls PressEnter (no read has been done yet), then falls back to the main loop which starts the next main menu cycle.

You could code the main loop in such a way that its read/case processing would handle the responses from all main/sub menus. But this would not be a typical approach, and not as easy to maintain as the more modular approach.

Also, Deletedirectory and Changedirectory have if-statements that are not closed out.

These are the changes I made, are the case statements in the right place?? Still is not functioning, can u tell me nething else im doing wrong??

amenu () {
clear
echo "\t\t\tMy Personal Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 1. Directory display"
echo "\t\t\t 2. File functions"
echo "\t\t\t 3. Directory functions"
echo
echo "\t\t\t 0. Exit"
echo Select by pressing a number and then ENTER ;
}

PressEnter () {
echo Press Enter
read x
}

DirectoryDisplay () {
ls -l|more
PressEnter
}

Filefunctions () {
clear
echo "\t\t\tFile functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 5. Delete file"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then ENTER ;
PressEnter
}

Deletefile () {
print -n "Enter file name to be deleted: "
read name
if [ -f $name ]
then
rm $name
echo "file: $name has been deleted"
else
echo "this is not a file"
fi
PressEnter
}

read answer

case $answer in
5) Deletefile ;;

0) break ;;
esac

done
clear



Directoryfunctions () {
clear
echo "\t\t\tDirectory functions Menu"
echo
echo "\t\tPlease Select:"
echo
echo "\t\t\t 6. Delete directory"
echo "\t\t\t 7. Change directory"
echo
echo "\t\t\t 0. Return to main menu"
echo Select by pressing a number and then press ENTER ;
PressEnter
}

Deletedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
echo "directory: $name has been deleted"
else
echo "this is not a directory"
PressEnter
fi
PressEnter
}

Changedirectory () {
print -n "Enter directory name to be deleted: "
read name
if [ -d $name ]
then
cd $name
else
echo "$name is not a directory"
fi
PressEnter
}



read answer

case $answer in
6) Deletedirectory ;;
7) Changedirectory ;;

0) break ;;
esac

done
clear


while true
do

amenu

read answer

case $answer in
1) DirectoryDisplay ;;
2) Filefunctions ;;
3) Directoryfunctions ;;

0) break ;;
esac

done
clear

Smilie Smilie Smilie Smilie Smilie
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #692
Difficulty: Medium
In 1995, the Santa Cruz Operation (SCO) acquired UnixWare from Novell.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

What are the differences between 'bash' and 'sh'

Hopefully this doesn't come off as too much of a "newbie" question or a flamebait. But I have recently begun working with a Sun Solaris box after having spent the past five years working with RedHat. From what i can tell, thing look fairly similar and the 'man' command is some help. But I've... (7 Replies)
Discussion started by: deckard
7 Replies

2. UNIX for Advanced & Expert Users

How to remove a file with a leading dash '-' in it's name?

Somehow someone created a file named '-ov' in the root directory. Given the name, the how was probably the result of some cpio command they bozo'ed. I've tried a number of different ways to get rid of it using * and ? wildcards, '\' escape patterns etc.. They all fail with " illegal option --... (3 Replies)
Discussion started by: GSalisbury
3 Replies

3. Email Antispam Techniques and Email Filtering

Procmail recipe: blocking 'unsubscribe and opt-out' messages....

Here is a crude procmail recipe that I quickly created (NOT a procmail recipe expert, btw) that has been catching lots of spam (current second after the charset_spam recipe posted earlier): :0B * .*If.you.do.not.wish.to.receive...* more_spam :0B * You.requested.to.receive.this.mailing... (0 Replies)
Discussion started by: Neo
0 Replies

4. IP Networking

BELKIN 'F5D5020' 16bit PCMCIA - FreeBSD HOWTO

Hey all, I've bought a few bits from Belkin who seem quite happy to support FreeBSD! Last time I bought a UPS from them and it's still going well :D I saw this on their website that the 16bit PCMCIA card was supported under FreeBSD: http://www.belkin.com/network/F5D5020.html I went to my... (0 Replies)
Discussion started by: WIntellect
0 Replies

5. UNIX for Dummies Questions & Answers

quoting echo 'it's friday'

echo 'it's friday' why appear the > (3 Replies)
Discussion started by: yls177
3 Replies

6. UNIX for Dummies Questions & Answers

HELP! The '/var/adm/message' file increase every few seconds???

Hi, guys, I have a big problem. I've got a sun solaris 4.1.4 workstation, and the /var/adm/message file will add one row every few seconds. It becomes a large file in a short time. I wander if there are some mistakes configuring the workstation. the /var/adm/message is as follow: ... (3 Replies)
Discussion started by: cloudsmell
3 Replies

7. Filesystems, Disks and Memory

HELP! The '/var/adm/message' file increase every few seconds???

Hi, guys, I have a big problem. I've got a sun solaris 4.1.4 workstation, and the /var/adm/message file will add one row every few seconds. It soon becomes a large file. I wander if there are some mistakes configuring the workstation. the /var/adm/message is as follow: ... (1 Reply)
Discussion started by: cloudsmell
1 Replies

8. UNIX for Advanced & Expert Users

Terminal 'Local Echo' lost on Modem Dial-out

Can anybody help me? I am developing a utility for automating message paging to a BT alphanumeric pager. I am using a USR 56K Fax-modem connected to /dev/cuab on a Sun Ultra-10. I am using the UNIX 'tip' utility to connect to the modem and I have configured the modem as follows: Baud Rate:... (2 Replies)
Discussion started by: mybeat
2 Replies

9. Shell Programming and Scripting

Clearify what it means under 'WHAT' when hit the 'w'-command

I wonder how I shall read the result below, especially 'what' shown below. The result was shown when I entered 'w'. E.g what is TOP? What is gosh ( what does selmgr mean?)? login@ idle JCPU PCPU what 6:15am 7:04 39 39 TOP 6:34am 6:45 45 45 TOP 6:41am ... (1 Reply)
Discussion started by: Aelgen
1 Replies

10. Programming

i can't use 'make' in my computer?

I need to compile a file,but 'make' does not work.please tell me how to use it or need which tools? (3 Replies)
Discussion started by: dsun5
3 Replies

Featured Tech Videos