У меня есть простой скрипт, который отключает цикл с терминальным эхо. Установлена ловушка для перехвата Ctrl + C для восстановления эха. Это почти всегда заканчивается сообщением «longjmp вызывает неинициализированный кадр стека ***: / bin / bash прекращен». Это вызвано командой "stty echo". Есть идеи как это исправить?
#!/bin/bash
stty -echo
trap 'echo EXIT; stty echo' EXIT
trap 'echo INT; exit' INT
trap 'echo QUIT; exit' QUIT
trap 'echo TERM; stty echo; exit' TERM
function l
{
read -s -n 1 -t 0.01 X && return 1
return 0
}
while true
do
l || break
done
Когда не вызывается функция "l" и чтение вызывается непосредственно в цикле, это вызывает время от времени "Ошибка сегментации":
read -s -n 1 -t 0.01 X && break