아직도 운동을 연습하고 있어요. 이전 질문에 도움을 주셔서 감사합니다.
우리의 임무는 터미널 창에 "화면 보호기"를 만드는 것입니다.
내가 하고 싶은 일은 키 누르기를 기다리는 동안 무작위로 숫자를 생성한 다음 파일에 추가할 여러 ASCII 아트 그림 중 하나를 선택하는 것입니다.
지금까지 내가 생각해낸 방법은 효과가 있지만 키를 누른 후에는 다른 숫자가 다시 생성될 뿐입니다. 키를 누를 때까지 계속해서 숫자를 생성하고 싶습니다. 그러면 루프에서 벗어날 수 있습니다.
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
나는 간단한 것을 간과하고 있다고 확신합니다. 오늘 7시간 중 가장 많은 시간을 이 의자에서 보냈습니다.
매우 감사합니다
편집 : 이것을 찾았습니다키를 누를 때까지 무언가를 출력합니다(루프).
그에 따라 조정했지만 마지막 수면 5가 실행을 마칠 때까지 커서가 표시되지 않습니다.
#!/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
답변1
효과가 있었습니다. 이것을 끝냈다
#!/bin/bash
tput civis
while true; do
num=$(awk -v min=5 -v max=10 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')
case $num in
1)
clear
cat ./s0.file
sleep 3
;;
....
*)
clear
cat ./s9.file
sleep 3
;;
esac
# In the following line -t for timeout, -N for just 1 character
read -t 0.25 -N 1 input
if [[ $input = " " ]] || [[ $input = " " ]]; then
# The following line is for the prompt to appear on a new line.
echo
break
fi
done
tput cnorm