【发布时间】:2017-07-23 23:45:17
【问题描述】:
我在服务器上有一个 (bash) 脚本,我继承了该脚本的管理方面,并且最近在脚本中发现了一个没有人引起我注意的缺陷。
发现问题后,其他人告诉我这让他们很恼火,但从未告诉我(太好了……)
所以,脚本遵循这个概念
#!/bin/bash
function refreshscreen(){
# This function refreshes a "statistics screen"
...
echo "Enter command to override update"
read -t 10 variable
}
此脚本刷新统计屏幕,并允许用户暂停更新以代替内置于 case 语句中的命令。但是,无论用户是否正在输入,读取都会在 10 秒后超时 (read -t 10)。
长话短说,如果用户正在输入命令,有没有办法防止读取超时?最好的情况是“超时 SEC 空闲/非活动秒数”,而不是 x 秒后超时。
我曾考虑在读取命令暂停屏幕以检查不活动之前在循环结束时运行后台脚本,但尚未找到使该命令工作的方法。
【问题讨论】: