input from command line in bash
Jeff Kinz
jkinz at kinz.org
Sat Sep 2 20:36:04 EDT 2006
On Fri, Sep 01, 2006 at 11:34:21AM -0400, Kevin D. Clark wrote:
>
> Stephen Adler <adler at stephenadler.com> writes:
>
> > Basically I want to write a shell script which askes,
> > "Are you sure you want to proceed? [N/y] " and then acts according to user
> > input at the command line.
For those of you with cycles to burn (lots of us these days), here is an
expensive (*resource wise ) way to read one key at a time from the
keyboard.
Frankly - it seems a tad ridiculous. I'm sure theres better ways.
I use in places where I want to minimize the keystrokes needed by the
user to do things. It allows you to have scripts which are "single
keystroke" navigable. Naturally this can cause problems too. :-)
(it wouldn't surprise me if readline can be set up to do single char
reads, which would be one better way to do it)
#####################################################################################
#
# getabyte: gets a single byte (expensively!) from the tty
# Syntax: x=`getabyte`
#
#####################################################################################
function getabyte {
ttystate=`stty -g`
stty raw
stty -echo
x=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
stty $ttystate
stty echo
echo $x
}
typeset -xf getabyte
getyN() {
while echo -n "${@}"' (y/N) '>&2
do
yn=`getabyte`
case $yn in
[yY]) return 0 ;;
*) return 1
esac
done
}
if getyN "Are you your you want to proceed?" ; then
echo "^M ^Mlaunching missiles now"
else
echo "^M ^Mlet's watch a movie instead"
fi
--
Jeff Kinz, Emergent Research, Hudson, MA.
Speech Recognition Technology was used to create this e-mail
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the Discuss
mailing list