Shell programming and simple menus - part 1
Any programmer or system administrator can
benefit from limiting end-user
access to the things that they actually need. For the timid, Unix offers
little help on how to start, and for the adventurous Unix offers too
many simple commands that can cause havoc.
A menu system is an almost mandatory add-on to any Unix system in the real
world. In saying "real world" Unix system, I mean one that doesn't involve
sitting in a dark room hunched over a glowing terminal trying to determine
the next highest prime number.
Commercial menu systems involve more than a simple prompt that dispatches
to some program based on a user selection. But often a simple approach will
get the job done. While I was creating EZMENU for Unix, one customer
required just such a simple solution.
The menu had to:
- Provide one or more prompts.
- Allow the user to select a prompt.
- Execute one or more commands associated with the selection.
The menu also had to provide a method for the user to exit the menu.
The design of the menu is simple, and it provides an excellent vehicle to
learn some shell programming tricks. The logic for a menu can be described
in the following simple steps:
- Display a menu.
- Get the user's menu pick.
- Check that the pick is valid and if not, display an error message and
return to step 1. - If the user's menu pick is to exit, then exit.
- Otherwise, execute the command(s) associated with the menu pick.
- Loop back to step 1.
The menu prompts can be displayed directly using the echo command as in:
echo "Please enter 1 to select Accounts Receivable"
or indirectly using a variable as in:
amenu="Please enter 1 to select Accounts Receivable" echo $amenu
A menu pick can be collected from the user by using the read command which
will read input from the keyboard as in:
echo "Please enter your choice" read answer
Defining functions
Another important feature of the shell (sh or ksh) is the ability to define
a function. A shell function is a collection of one or more shell commands
that are given a function name. A function can be executed by issuing the
name of the function in the shell script as if it were a Unix command.
However, a function must be defined before it can be executed. To define a
function, give it a name followed by an open and close parentheses,
followed by opening and closing curly braces. Within the curly braces place
the commands to be executed.
Sign up for ITworld's Daily newsletter
Follow ITworld on Twitter @IT_world
Brian Proffitt
Microsoft/Novell: Breaking Down the Coupon Numbers
Esther Schindler
Drupal's Dries Buytaert on Building the Next Drupal
Tom Henderson
Top Ten General Operating Systems Rants
pasmith
PS3 motion controller delayed; goes up against Project Natal
sjvn
Neolithic Windows security hole alive and well in Windows 7
claird
Perl source code comparison makes for good reading
mikelgan
Cell phones don't create stress or interrupt much
Sandra Henry-Stocker
How to: The Unix Interview
Where Google Chrome security fails: the password
I heard mention that the Chrome OS will have some sort of encryption available a la bitlocker. If it's possible to encrypt personal data using another password or key, then it may have potential for very secure data.... And Ubuntu has an 'encrypt home directory' option, perhaps google should follow suit.
- Dann
Join the conversation here
Quick, practical advice for IT pros. Made fresh daily.
- Ubuntu advances: Why Ubuntu server installations will surge in 2010
- Social media marketing: How to make friends with benefits
- More...
Want to cash in on your IT savvy? Send your tip to tips@itworld.com. If we post it, we'll send you a $25 Amazon e-gift card.






