The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Dummies Questions & Answers
Google UNIX.COM


UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !!

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Need help with script for menu sinjin Shell Programming and Scripting 0 12-10-2007 12:27 PM
Phone menu Dawg101 Shell Programming and Scripting 1 05-27-2007 10:12 AM
Menu space Shell Programming and Scripting 5 03-02-2005 03:05 AM
CDE menu gabim AIX 1 10-20-2003 03:17 AM
Menu script Ypnos Shell Programming and Scripting 9 07-02-2003 01:25 PM

Closed Thread
 
Submit Tools LinkBack Thread Tools Display Modes
  #15  
Old 01-15-2002
Registered User
 

Join Date: Dec 2001
Location: UK, England
Posts: 45
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 05:11 PM.
Forum Sponsor
  #16  
Old 01-18-2002
Registered User
 

Join Date: Dec 2001
Location: UK, England
Posts: 45
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
Jimbo
Guest
 

Posts: n/a
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.
  #18  
Old 01-18-2002
Registered User
 

Join Date: Dec 2001
Location: UK, England
Posts: 45
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
Jimbo
Guest
 

Posts: n/a
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.
  #20  
Old 01-20-2002
Registered User
 

Join Date: Dec 2001
Location: UK, England
Posts: 45
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
Registered User
 

Join Date: Dec 2001
Location: UK, England
Posts: 45
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

Google The UNIX and Linux Forums
Closed Thread

Thread Tools
Display Modes




All times are GMT -7. The time now is 02:16 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0