Ainda trabalhando na minha Prac. Obrigado pela ajuda da minha pergunta anterior.
estamos encarregados de criar um "protetor de tela" para uma janela de terminal.
O que estou tentando fazer é aguardar uma tecla pressionada, gerar aleatoriamente um número que, em seguida, seleciona uma das várias imagens de arte ASCII que serão adicionadas ao arquivo.
O que eu tenho até agora funciona, mas só vai regenerar outro número depois que eu pressionar uma tecla. Eu estou querendo que ele continue gerando um número até que eu pressione uma tecla e então me tire do loop.
while read -r -n1 key
do
num=$(awk -v min=5 -v max=10 'BEGIN{srand(); print int(min+rand()*(max-
min+1))}')
echo $num
case $num in
1)
echo "hello"
sleep 5
;;
2)
echo "bye"
sleep 5
;;
***and so on***
esac
done
Eu tenho certeza que esqueci de algo simples. esteve nesta cadeira por mais de 7 horas hoje.
muito obrigado
EDITAR:
achei isso Saída algo (em um loop) até uma tecla é pressionada
e o adaptaram de acordo, mas eu não obtenho um cursor de volta até que o último sono 5 tenha terminado a execução.
#!/bin/bash
while true; do
num=$(awk -v min=5 -v max=10 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')
case $num in
1)
echo "hello"
sleep 5
;;
*)
echo "whats going on 'ere?"
sleep 5 &
wait $!
;;
esac
# In the following line -t for timeout, -N for just 1 character
read -t 0.25 -N 1 input
if [[ $input = "q" ]] || [[ $input = "Q" ]]; then
# The following line is for the prompt to appear on a new line.
echo
break
fi
done