我有一个简单的脚本,禁用了与终端回显的循环。设置了陷阱以捕获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