세게 때리다

세게 때리다

나는 이 프로그램의 스크립트를 작성해야 합니다. 에서 임의의 문자를 선택하세요 a-z. 사용자는 문자를 추측하고 선택한 문자와 일치시키도록 요청받습니다. 일치하는 항목이 있으면 "정확함"이 표시되고, 그렇지 않으면 추측한 문자가 선택한 문자보다 높은지 낮은지 묻는 메시지가 표시됩니다. 누군가 쉘에서 이 작업을 수행하는 방법에 대한 예를 들어줄 수 있습니까?

답변1

세게 때리다

{a..z}BASH는 BASH를 사용하여 쉽게 알파벳을 생성할 수 있고 BASH는 ENTER를 누르지 않고도 단일 문자를 입력할 수 있기 때문에 이 작업에 매우 적합합니다.

$ cat guesschar.bash 
c=$(echo {a..z} | tr -d ' ')
x=${c:$((RANDOM%26)):1}
while read -n1 -p'guess the char: ' ; do
        echo
        if [[ $REPLY < $x ]] ; then echo too low...
        elif [[ $REPLY > $x ]] ; then echo too high...
        else break
        fi
done
echo $x ... 'hit!'
$ bash guesschar.bash 
guess the char: m
too high...
guess the char: f
too low...
guess the char: j
too low...
guess the char: k
k ... hit!

바라보다쉘 매개변수 확장

답변2

rand=$(tr -dc '[:lower:]' </dev/urandom | 
    dd bs=1 count=1 status=none)
until [ "$in" = "$rand" ] && echo "correct" ; do
    in=$(stty raw 
    dd bs=1 count=1 status=none </dev/tty 
    stty sane )
    echo
done

위의 내용이 귀하의 요구를 충족한다고 생각합니다.

답변3

이식 가능한 방법을 원한다면 다음을 시도해 볼 수 있습니다.

perl -e 'print(("a".."z")[rand 26])'

관련 정보