作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在csh你可以做
set ignoreeof
或者在 bash tou 上可以做
export ignoreeof=1
这将使 csh/bash 忽略 EOF,即它不会在 Ctrl+D 时退出,或者当它到达结尾或文件时。
有没有办法用 tclsh 做同样的事情?
有没有办法让 tclsh 在到达文件末尾时不退出?
最佳答案
如果 tclsh 正在运行脚本,它不会在检测到标准输入上的 EOF 时退出;这纯粹是内置 REPL 的一个特性。您可以使用 eof stdin
自行检测此类情况,此时您可以决定如何处理。
如果你想让 Ctrl+D 不是 EOF,那么最简单的方法是将终端置于原始模式,如下所示:
set sttySettings [exec stty -g <@stdin]
exec stty -echo raw <@stdin
完成后,像这样切换回来:
exec stty $sttySettings <@stdin
确保在程序退出前切换回来!
另一件事是,如果您使用原始输入,则必须自己处理所有行编辑。一个方便的方法是使用纯 Tcl readline-like 系统 such as this example from the Tcler's Wiki .你可能需要稍微调整一下,让 Ctrl+D 做你想做的事。
另一种方法是让事物处于熟化模式,只使 Ctrl+D 非特殊(在 OSX 上测试):
exec stty eof "" <@stdin
同样,您需要在退出时重新设置,事实上它一点也不特别,可能会在其他地方引起问题;经过上面的技巧,它只是一个普通字符。
关于bash - 如何让 tclsh 忽略 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628677/
我是一名优秀的程序员,十分优秀!