저는 Korn Shell에서 스크립트를 작성 중이며 명령문 중 하나에 대해 getch()
C에서 사용되는 것과 유사한 것을 원합니다.
내가 키보드를 눌렀다는 것을 감지하면 while
루프를 종료 하고 싶습니다.ESC
예를 들어.
while [[ getch() != 27 ]]
do
print "Hello"
done
내 스크립트에서는 이것이 getch() != 27
작동하지 않습니다. 나는 그곳에서 뭔가를 하고 싶었다. 누구든지 도와줄 수 있나요?
답변1
사용read
x='';while [[ "$x" != "A" ]]; do read -n1 x; done
read -n 1
1 문자를 읽는 것입니다.
작동해야 bash
하지만 작동하는지 확인할 수 있습니다.ksh
답변2
#!/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}
}