![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| 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 !! |
|
|
||||
| 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 |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#15
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
Quote:
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 |