Comandos Unix para gerar o alfabeto aleatório [fechado]

0

Eu tenho que escrever um script para este programa. escolha uma letra aleatória em a-z . Peça ao usuário para adivinhar a letra, combiná-lo com a letra escolhida. Se combinado, exibir "correto", caso contrário, a letra adivinhada está acima ou abaixo da letra escolhida. Alguém pode demonstrar com exemplos de como eu poderia fazer isso no shell?

    
por user3331420 26.05.2014 / 08:21

3 respostas

5

BASH

O BASH é bom para este trabalho porque o BASH pode gerar o alfabeto facilmente usando {a..z} e o BASH pode inserir um único char sem precisar pressionar ENTER

$ cat guesschar.bash 
c=$(echo {a..z} | tr -d ' ')
x=${c:$((RANDOM%26+1)):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!
    
por 26.05.2014 / 08:45
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

Acho que o texto acima faz o que você precisa.

    
por 26.05.2014 / 14:09
0

Se você quer um modo portátil, você pode tentar:

perl -e 'print ("a".."z")[rand 26]'
    
por 26.05.2014 / 12:30