在带有读取的 while 循环中的睡眠期间禁用用户输入 (bash)
Disable user input during sleep in while loop with read (bash)
我有一个带有 while 循环的 bash 小脚本,它等待用户输入,执行某些操作然后休眠一段时间:
while true; do
read input
echo $input
sleep 5
done
我不希望它在睡眠期间接受任何用户输入。问题是在脚本继续时处理睡眠期间在 shell 中输入的任何输入。是否可以在睡眠期间完全禁用用户输入?
我看过这个:Disabling user input during an infinite loop in bash,但这对我没有帮助,是吗?
希望有人能帮我解决这个问题。
这是需要的:
#!/usr/bin/env bash
hideinput(){
[ -t 0 ] && stty -echo -icanon time 0 min 0
}
cleanup(){
[ -t 0 ] && stty sane
}
trap cleanup EXIT
trap hideinput CONT
while true; do
while read -t 0.001 -n 10000 discard; do :; done # Discard anything already inputted.
cleanup
read -p "Input something : " input
hideinput
echo "What you inputted : " $input
sleep 5
done
我有一个带有 while 循环的 bash 小脚本,它等待用户输入,执行某些操作然后休眠一段时间:
while true; do
read input
echo $input
sleep 5
done
我不希望它在睡眠期间接受任何用户输入。问题是在脚本继续时处理睡眠期间在 shell 中输入的任何输入。是否可以在睡眠期间完全禁用用户输入?
我看过这个:Disabling user input during an infinite loop in bash,但这对我没有帮助,是吗?
希望有人能帮我解决这个问题。
这是需要的:
#!/usr/bin/env bash
hideinput(){
[ -t 0 ] && stty -echo -icanon time 0 min 0
}
cleanup(){
[ -t 0 ] && stty sane
}
trap cleanup EXIT
trap hideinput CONT
while true; do
while read -t 0.001 -n 10000 discard; do :; done # Discard anything already inputted.
cleanup
read -p "Input something : " input
hideinput
echo "What you inputted : " $input
sleep 5
done