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