Я использую что-то подобное в сценарии:
REPLY=$(rlwrap head -n 1)
На самом деле с большим количеством опций, но этого достаточно, чтобы воспроизвести проблему. Это прекрасно работает для моих целей ... до тех пор, пока я не нажму Ctrl-C, чтобы выйти. Если я это сделаю, входное эхо останавливается на терминале, и единственный способ восстановить его - это слепо набрать reset
.
Флаг -I
не помог. Я также попробовал это:
rlwrap head -n 1 | REPLY=$(cat)
но тогда REPLY не был установлен, когда я нажал Enter. Я пробовал как в bash, так и в dash, с одинаковыми результатами EDIT: Извините, из-за опечатки в shebang, dash не выполнялся. Он работает правильно в тире.
Как я могу установить переменную на выход rlwrap
и иметь возможность прерывания без потери входного эха? Также из любопытства кто-нибудь знает, что здесь происходит?