強く打つ

強く打つ

私はこのプログラムのスクリプトを書く必要があります。から任意の文字を選択してください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])'

関連情報