巴什

巴什

我必须为这个程序编写一个脚本。在 中选择一个随机字母a-z。要求用户猜测该字母,并将其与所选字母相匹配。如果匹配,则显示“正确”,否则提示猜测的字母是否高于或低于所选字母。有人可以举例说明我如何在 shell 中执行此操作吗?

答案1

巴什

BASH 非常适合这项工作,因为 BASH 可以通过使用轻松生成字母表{a..z},并且 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])'

相关内容