gpt4 book ai didi

bash - 如何让 tclsh 忽略 EOF?

转载 作者:行者123 更新时间:2023-11-29 09:30:53 34 4
gpt4 key购买 nike

在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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com