Giving "read" from standard input a timeout.


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Giving "read" from standard input a timeout.

I want to prompt a user for input but I want it to timeout after a specified time if no response is given. I tried the sleep command but this does not work. I am using ksh.
Thanks.
# 2  
Quote:
Originally Posted by rello
I want to prompt a user for input but I want it to timeout after a specified time if no response is given. I tried the sleep command but this does not work. I am using ksh.
Thanks.
Code:
#!/bin/sh
#
STTY=`stty -g`
WAIT=60
printf 'enter [y/n] '
stty intr '' -icanon min 0 time $WAIT ignbrk -brkint -ixon isig
read ans
stty $STTY
case ${ans:=y} in [yY]*) ;; *) exit ;; esac
echo do the rest
exit

or read timeout

Last edited by vgersh99; 03-02-2005 at 03:49 PM..
# 3  
You can use read timeout functionality to do this. We can make your requirement as,

Code:
#!/bin/sh
# input timeout

echo "Enter your input"
read -t 5 input
if [[ $? -ne 0 ]]
then
  echo "User did not enter any input"
  exit 1
else
  echo "User did input as $input"
fi

exit 0
# END #

Try this in bash.

HTH.
# 4  
Thank you both for your help. I am still having trouble since neither works with ksh.
I have tried modifying both and still am not having much luck.
# 5  
Quote:
Originally Posted by rello
Thank you both for your help. I am still having trouble since neither works with ksh.
I have tried modifying both and still am not having much luck.
strange - works just fine for me under ksh on Solaris.
have you looked at the link I've posted?

here's another way - quoted from the posted link:
Code:
#!/bin/ksh

read_timeout() {
  trap : USR1
  trap 'kill "$pid" 2> /dev/null' EXIT
  (sleep "$1" && kill -USR1 "$$") & pid=$!
  read "$2"
  ret=$?
  kill "$pid" 2> /dev/null
  trap - EXIT
  return "$ret"
}
read_timeout 5 var
printf 'Got: "%s" as $var\n' "$var"

# 6  
rello, what system are you using? If you have the line program, try:
ans=$(line)
rather than
read ans
# 7  
I am running Solaris 9. All the programs are in ksh not /bin/sh.
I am also not trying to kill the process.
I have menu and one othe optoins calls a script that loops and pauses 5 seconds before repeating.
If we enter Ctrl d or break out we go back to the prompt and not the original menu.
I want to put a prompt at the end of the loop where it pauses (sleeps) for 5 seconds and prompt the user to quit (evaluate and quit) getting me back to the original menu.
I am not sure how ans=$(line) would work.
Thanks.
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Using "mailx" command to read "to" and "cc" email addreses from input file
asjaiswal
How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where...... UNIX for Dummies Questions & Answers
2
UNIX for Dummies Questions & Answers
Manipulating input into the shell "read" command
kingpin2502
Hi All I have a migration program that creates directories based on dates, e.g 20090714 20090812 etc.. Based on their requirements, the user will select the directory they want to perform an action on. Currently, this is a snippet of the code I use no_of_versions=`ls | wc -l` if...... Shell Programming and Scripting
2
Shell Programming and Scripting
read -p "prompt text" foo say "read: bad option(s)" in Bourne-Shell
wiseguy
Hallo, i need a Prompting read in my script: read -p "Enter your command: " command But i always get this Error: -p: is not an identifier When I run these in c-shell i get this error /usr/bin/read: read: bad option(s) How can I use a Prompt in the read command?... Shell Programming and Scripting
9
Shell Programming and Scripting
How to timeout the "read" command
rm-r
I have a script that at some point will ask the interactive user a question: #!/bin/ksh echo "What is your access code?" read ans ... Sometimes this script is run by other scripts and there are no interactive users. The script then hangs on the "read" command, waiting for a user response...... Shell Programming and Scripting
5
Shell Programming and Scripting
Breaking input with "read" command
vino
In this post, Perderabo's script says echo 05/06/25 14:15:56 | IFS=" /:" read Y1 M1 D1 h1 m1 s1 which, if I am not wrong, will break the input into Y1, M1 et al. I tried the following in my code #! /bin/ksh # per.sh typeset -R2 HOUR=00 typeset -R2 MIN=00 typeset -R2 SEC=00 ...... Shell Programming and Scripting
2
Shell Programming and Scripting