Use read
x='';while [[ "$x" != "A" ]]; do read -n1 x; done
read -n 1
é para ler 1 caractere.
Isso deve funcionar em bash
, mas você pode verificar se funciona em ksh
Estou escrevendo um script no Korn Shell, onde em uma declaração quero algo como getch()
usado em C.
Eu quero que meu loop while
seja encerrado, se vir que eu pressionei ESC
no teclado.
Por exemplo,
while [[ getch() != 27 ]]
do
print "Hello"
done
No meu script, este getch() != 27
não funciona. Eu quero que algo lá seja trabalhado. Alguém pode ajudar?
Use read
x='';while [[ "$x" != "A" ]]; do read -n1 x; done
read -n 1
é para ler 1 caractere.
Isso deve funcionar em bash
, mas você pode verificar se funciona em ksh
#!/bin/ksh
# KSH function to read one character from standard input
# without requiring a carriage return. To be used in KSH
# script to detect a key press.
#
# Source this getch function into your script by using:
#
# . /path/to/getch.ksh
# or
# source /path/to/getch.ksh
#
# To use the getch command in your script use:
# getch [quiet]
#
# Using getch [quiet] yields no output.
getch()
{
STAT_GETCH="0"
stty raw
TMP_GETCH='dd bs=1 count=1 2> /dev/null'
STAT_GETCH="${?}"
stty -raw
if [[ "_${1}" != "_quiet" ]]
then
print "${TMP_GETCH}"
fi
return ${STAT_GETCH}
}
Tags ksh shell-script