Select Command - return


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Select Command - return
# 1  
Select Command - return

Hello everyone,
A simple question which may have a suggested solution:
I am using, and loving, the select command in a ksh93 script on AIX 6.1 to present users with menus.
I have been successful in controlling all of key input by the users, I still have an issue with the RETURN key. When the menu is presented if the user presses the return key by itself the menu gets redrawn. If the user keeps pressing return the screen keeps getting full of the same menu over and over and it scrolls.
Is there a way to capture the fact that return was pressed by itself and take care of action needed in the do....done attached to the select?
Or alternatively allow the return to redraw the menu but on top the original one, and not append it to the screen after the PS3 prompt?
Hope you all have some suggestions.
Thanks, and a Happy New Year everyone !
# 2  
This is a simple menu script I put together that might help you accomplish what your trying to do, It doesn't require the user to press return and it stays at top of screen:

Code:
#!/usr/bin/ksh
# Script: example_menu.sh
# Descr:  Example of auto record advance(i.e. carriage return) with simple menu

function _choices
{ clear
  cat <<BOX

     HANDY INFO - Choose Desired Number
     ====================================
  1  Current Directory
  2  Your Login ID
  3  UNIX Processes for your ID
  4  Entry in /etc/passwd for your ID
  5  Users with ID of 0 (zero)
  6  Users with ID >= 500
  7  ID Search PATH for $LOGNAME
  8  Currently Mounted devices
  9  HD Usage and mount-points

  0  Exit

BOX
} # EOF  _choices()


function _action
{
  stty raw
  ans=`dd bs=1 count=1 2>/dev/null`
  eval $1='$ans'
  stty cooked
} # EOF  _action()


function _complog
{ # Required argument: $1 = output of logname command
  if [[ "${1}" != "${LOGNAME}" ]]
  then
    echo "\bYour Login ID is: \"${1}\" (real) and \"${LOGNAME}\" (su)."
  else
    echo "\bYour Login ID is: \"${1}\"."
  fi
} # EOF  _complog


function _waiter
{ echo "\nPress <Enter> to continue.... \c"
  read waiting4u
} # EOF  _waiter()


function _yourc
{
  case "${ans}" in  # process response
    1) echo "\bThe current directory is: \c"; pwd; _waiter ;;
    2) _complog "${user}"; _waiter ;;
    3) echo "\b\b"; ps -ef | grep "${user}" | more ; _waiter ;;
    4) echo "\b\b"; grep "${user}" /etc/passwd; _waiter ;;
    5) echo "\b\b"; awk -F":" '$3 == 0 {print $0}' /etc/passwd; _waiter;;
    6) echo "\b\b"; awk -F":" '$3 >= 500 {print $0}' /etc/passwd | more ; _waiter;;
    7) echo "\b\b"; echo $PATH | awk 'BEGIN {RS=":"} {print $0}'; _waiter;;
    8) echo "\b\b"; mount | awk '$1 != "none" {print $0}'; _waiter;;
    9) echo "\b\b"; df; _waiter ;;
    0) clear; exit 0 ;;  # breaks the loop
    *) echo " Invalid option...." ; _waiter ;;
  esac
} # EOF  _yourc()


user=`logname`
while :
do
  _choices          # display the menu
  _action _yourc    # gather user response
  _yourc
done

# 3  
Just issue a clear command right before displaying the menu. You may have to use tput clear.
# 4  
I response to last comment: pressing return when select is in place does not give me back control, therefore I cannot issue a CLEAR.
Experiment yourself and you will see what I mean. How can I trap the return being pressed by itself?
Thanks
# 5  
Interesting problem. One ugly hack:
Code:
Q="$(clear)1) Quit"  
select c in "$Q" ...
do
  case $c in
  "$Q") break ;;
  ...
  esac 
done

 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #266
Difficulty: Easy
In 1952, Alan Turing was prosecuted for homosexual acts a criminal offense in the UK and accepted chemical castration treatment as an alternative to prison.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Select command

Hi I'm using the "select" command in the global_env.sh to log in to the application directory. This file is called in .bashrc profile. Sample code: Filename: global_env.sh set -o vi export severname=$(uname -n) printf '%s\n%30s\n%s\n' "***********************" "Welcome to $severname"... (6 Replies)
Discussion started by: cheers799
6 Replies

2. Shell Programming and Scripting

SQLPLUS command with more than 1 select statement

Hi all, I'm using below code processId=`sqlplus -s ${sysuser}/${syspwd} <<CHK_PROCESS whenever sqlerror exit sql.sqlcode; set head off feedback off echo off pages 0 SELECT PROCESS_ID FROM LSHADMIN.DATA_DOMAIN WHERE DOMAIN_NAME = '${tabname}' ... (8 Replies)
Discussion started by: Pratiksha Mehra
8 Replies

3. Shell Programming and Scripting

Select command help with blank input value

I have a select menu driven script using a case statment and cannot control what happens after a user's input is just <ENTER> or the <SPACEBAR>+<ENTER>. I want it to just hit the "MAIN" function and not redraw the options. I've look everywhere for the answer and am at a loss. Here's the code:... (4 Replies)
Discussion started by: ambroze
4 Replies

4. Shell Programming and Scripting

How to use select into command in shell script?

I need to get total number of rows in a table by using select count(*) from table and need to assign into a variable in shell script. I used the following script, it does return the number of rows but also with oracle headers, Please help me to eliminate this headers. Shell Script #!/bin/sh... (16 Replies)
Discussion started by: vel4ever
16 Replies

5. Shell Programming and Scripting

Error using select menu command

Hi All, I am trying to use the select command & the menu. below mention is my script #!/bin/bash 2 3 PS3="Is today your birthday? " #PS3 system variable 4 5 echo "\n" 6 7 8 select menu_selection in YES NO QUIT 9 do 10 11 ... (1 Reply)
Discussion started by: milindb
1 Replies

6. Shell Programming and Scripting

::select statement return value with correct field size::

Hi Everyone, I am facing a problem regarding the select from sybase, the return with the incorrect size. For example, field is NAME(20). After i selected from sybase, the result is nicky. after i assign it to another declaration variable, it will be in actual name "nicky" , what i need... (10 Replies)
Discussion started by: ryanW
10 Replies

7. Shell Programming and Scripting

Select command to build menu

Hello everyone. I am using the select command to build a menu, here is my question: Is it possible to generate a menu which contains several sections and have a separator between the sections without having a selection number generated in front of the separator? This is a sample of what I would... (1 Reply)
Discussion started by: gio001
1 Replies

8. Shell Programming and Scripting

Select command array

Hello everyone, I have a quick question about the select command in ksh. I am using it to define a menu for user selection, I have found that the REPLY var contains the input from the user, I was interested to find out if there is a system variable that contains the whole menu as an array, the... (2 Replies)
Discussion started by: gio001
2 Replies

9. UNIX for Dummies Questions & Answers

to pick up the Return Code ( RC) from the mailx command and return it to SAS uisng 's

Hi All, Can anyone please let me know the syntax / how to pick up the Return Code ( RC) from the mailx command and return it to SAS uisng 'system()' function and '${?}'. I am in a process to send the mail automatically with an attachment to bulk users. I have used 'Mailx' and 'Unencode'... (0 Replies)
Discussion started by: manas6
0 Replies

10. UNIX for Dummies Questions & Answers

Command to select files with different extensions

I want to select files which have different extensions such as .cpp, .cs, .h I can select one of them as find . -name "*.cpp" but I want to select all of them in one command only. It should be pretty simple but I'm not able to get it. Any help with the command will be greatly appreciated. (1 Reply)
Discussion started by: MobileUser
1 Replies

Featured Tech Videos