如何将消息回显到TCL中的文件

如何将消息回显到TCL中的文件,tcl,Tcl,我试图通过将echo重定向到变量_A.log来记录变量_A值,如下所示: echo $variable_A >> variable_A.log 但是,它没有将值打印到我的日志文件中,而是将“$varaible\u A>>variable\u A.log”视为字符串并在提示符上打印。要将值附加到文件中,需要以正确的模式打开文件,并使用两个参数形式的puts(单参数形式默认为写入标准输出)。让我们做一个简单的过程来完成它: proc appendToFile {message >

我试图通过将echo重定向到变量_A.log来记录变量_A值,如下所示:

echo $variable_A >> variable_A.log

但是,它没有将值打印到我的日志文件中,而是将“$varaible\u A>>variable\u A.log”视为字符串并在提示符上打印。

要将值附加到文件中,需要以正确的模式打开文件,并使用两个参数形式的
puts
(单参数形式默认为写入
标准输出)。让我们做一个简单的过程来完成它:

proc appendToFile {message >> filename} {
    set f [open $filename "a"];   # The “a” is the key part
    puts $f $message
    close $f
}
现在我们可以很容易地使用它:

appendToFile $variable_a >> variable_A.log

本例中的
>
只是语法上的糖分。除了让你所做的更容易阅读之外,它没有任何价值。(
>
在Tcl中是一个合法但非常奇怪的变量名。)

这效率较低,但很容易找到:

exec echo $message >> filename

在交互式tclsh会话中,由于定义defalt
unknown
过程的方式,它将在没有执行
的情况下工作

%echo$variable\u A>>variable\u A.log无法读取“variable\u A”:没有这样的变量%
我在
tclsh
中尝试了定义变量和未定义变量,在这两种情况下,我都得到了期望的结果。您在上面看到的是,当它在不存在
变量的情况下使用时,
我从脚本运行命令。。。这就是问题所在吗?我已经检查并确保变量存在。。。