【发布时间】:2021-06-17 09:33:03
【问题描述】:
我有一个带有 while 循环的小 bash 脚本,它等待用户输入,做某事然后休眠一段时间:
while true; do
read input
echo $input
sleep 5
done
我不希望它在睡眠期间接受任何用户输入。问题是当脚本继续时,在睡眠期间输入到 shell 中的任何输入都会被处理。是否可以在睡眠期间完全禁用用户输入?
我见过这个:Disabling user input during an infinite loop in bash,但这对我没有帮助,不是吗?
希望有人可以帮助我。
【问题讨论】:
-
“接受”用户输入是什么意思?通常,在 unix 中,您在输入未被接受时输入的任何内容都会立即回显,并存储在缓冲区中,因此如果稍后读取输入的内容,它将接收输入的内容。这通常称为“typeahead”。您的脚本是否在执行与此不同的操作,或者您是否希望它执行与此不同的操作?
-
感谢您的澄清。我不知道。是的,我希望它做一些不同的事情,即忽略睡眠时收到的任何输入,只在醒来后接收新的输入。
标签: bash while-loop user-input sleep