[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

вопрос к знатокам баша



всем привет!
хочется в одной приблуде реализовать "режим чата", суть которого в следующем:
раз в 15, допустим, секунд проверяем наличие новых сообщений.
в течение этого времени юзер может вводить свой текст, а по нажатию энтера -
отправлять.
если получили новое сообщение - сохраняем в переменной то, что наш юзер успел
набрать, очищаем строку (с этим разобрался, вроде), выводим его, после него
выводим юзерский ввод и даем ему писать дальше (что-то типа read -i "набранный
текст").
так вот, проблема как раз в том, чтобы запомнить то, что юзер успел набрать за
отведенное время.
банальный read -t15 сохраняет результат только при получении целой строки (т.е.
по нажатию энтера), если не успел - извини, ниче не знаю. причем введенный
текст он потом выплевывает в консоль, но перехватить этот вывод у меня никак не
получилось (а может, и не выплевает, а это глюк баша, потому как текст
появляется после приглашения, надо проверить strace'ом)
так вот, есть какой-то способ считывать пользовательский ввод в течение этих 15
секунд с сохранением результатов, если энтер жмакнуть юзер не успел?

альтернативные реализации зело непросты (типа как с помощью screen/tmux разбить
окно пополам, но тогда нужно в них запускать отдельные скрипты, которые
непонятно как должны между собой общаться. и прочее в таком духе, тянущее еще
лишние зависимости). зачем писать такое на баше - отдельный вопрос. скорее для
творческого саморазвития, интересно уже))


Reply to: