gpt4 book ai didi

c - 什么 tcl 命令返回最后评估的命令?

转载 作者:行者123 更新时间:2023-12-04 04:35:39 31 4
gpt4 key购买 nike

什么 tcl 命令返回最后评估的命令?我认为它应该有类似 bash 历史的东西。

我试过这个,但它打印空字符串。

set aaa bbb
puts [history info]

我有创建 Tcl 解释器并使用它评估命令的 c++ 程序。在特定时刻,我需要知道最后评估的命令是什么。是否可以使用 Tcl 或 C 接口(interface)?
set a bbb
set b ccc
puts eee
set hh [history redo 1]

现在出现错误
event "1" hasn't occured yet
while executing
"HistIndex $event"
(procedure "tcl::HistRedo" line 6)
invoked from within
"tcl::HistRedo [lindex $args 1]"
(procedure "history" line 109)
invoked from within
"history redo 1"
invoked from within
"set hh [history redo 1]"
(file "./a.itcl" line 17)

最佳答案

使用 history 可以在 tclsh 中查看和操作以前输入的命令。命令。这使您可以查看先前的命令列表和重做事件。

在交互式 tclsh 中,还有一个 !!!N history redo N 的快捷方式重做最后输入的命令或重做命令 N(其中 N 是事件编号)。

它不受向上箭头或 ctrl-p 或任何正常的约束。为此,您可能需要一些像 rlwrap 或 socat READLINE 这样的包装器。提供 readline 样式的行编辑。如果你有一个 X Windows session ,那么 tkcon更多用,并提供合理的命令行编辑。在 Windows 上,tclsh 可以使用 cmd.exe 提示符下的构建行编辑 - 包括使用 uparrow 来访问以前的命令。

在我的测试 session 中:

% info pa
8.5.13
% history z
bad option "z": must be add, change, clear, event, info, keep, nextid, or redo
% history info
1 info pa
2 history z
3 history info
% history redo 1
8.5.13
% exit

跟进

来自原始发帖人的附加评论指出,代码没有在标准的 tclsh 解释器中运行。历史功能在 generic/tclHistory.c 和 library/history.tcl 库脚本中实现。如 C 文件头注释中所述:

This module and the Tcl library file history.tcl together implement Tcl command history. Tcl_RecordAndEval(Obj) can be called to record commands ("events") before they are executed. Commands defined in history.tcl may be used to perform history substitutions.



所以我们可以推断自定义解释器必须使用 Tcl_RecordAndEval评估我们想要输入历史的命令时的 API 调用。大概当前的自定义实现只是使用 Tcl_Eval 或相关函数之一。

关于c - 什么 tcl 命令返回最后评估的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783870/

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