Redirect 将标准输出重定向到tcl中的文件

Redirect 将标准输出重定向到tcl中的文件,redirect,tcl,io-redirection,tee,cisco-ios,Redirect,Tcl,Io Redirection,Tee,Cisco Ios,我知道以前有人问过这个问题 但是听我说完 我在思科路由器(IOS)上工作 我必须编写一个脚本来执行一些命令,并将它们的输出重定向到一个文件。但是,我不想对每个命令都使用tee,而是要打开一个文件,然后运行命令,命令的输出将重定向到该文件,然后关闭该文件 甚至重定向操作符也不起作用,或者回答如下: 这个问题中的解决方案对您不起作用这一事实提供了信息:您遇到的真正问题是,Tcl命令通常不会写入stdout(除了put,这是它的主要工作,以及parray,这是一个在内部使用put的过程)。您使用的“w

我知道以前有人问过这个问题

但是听我说完

我在思科路由器(IOS)上工作

我必须编写一个脚本来执行一些命令,并将它们的输出重定向到一个文件。但是,我不想对每个命令都使用
tee
,而是要打开一个文件,然后运行命令,命令的输出将重定向到该文件,然后关闭该文件

甚至重定向操作符
也不起作用,或者回答如下:


这个问题中的解决方案对您不起作用这一事实提供了信息:您遇到的真正问题是,Tcl命令通常不会写入stdout(除了
put
,这是它的主要工作,以及
parray
,这是一个在内部使用
put
的过程)。您使用的“write to
stdout
”只是交互式Tcl shell的一个功能

要在运行脚本时捕获所有命令的结果,需要如下包装器:

trace add execution source leavestep log_result
proc log_result {cmd code result op} {
    puts stdout $result
}
source theRealScript.tcl
你会发现它会产生大量的输出。减少输出是一件非常有用的事情,因此这会将其简化为立即执行的命令(而不是它们调用的所有命令):

跟踪添加执行源输入步骤日志\u输入
跟踪添加执行源离开步骤日志\u结果
proc log_输入{args}{
全球测井深度
增加测井深度
}
proc log_结果{cmd code result op}{
全球测井深度
如果{[incr log_depth-1]<1&&$result ne”“}{
放入stdout$结果
}
}
source theRealScript.tcl

您可能仍然会获得远远超过您想要的输出…

这个问题中的解决方案对您不起作用这一事实提供了信息:您遇到的真正问题是,Tcl命令通常不会写入stdout(除了
put
,这是它的主要工作,以及
parray
,这是一个在内部使用
put
的过程)。您使用的“write to
stdout
”只是交互式Tcl shell的一个功能

要在运行脚本时捕获所有命令的结果,需要如下包装器:

trace add execution source leavestep log_result
proc log_result {cmd code result op} {
    puts stdout $result
}
source theRealScript.tcl
你会发现它会产生大量的输出。减少输出是一件非常有用的事情,因此这会将其简化为立即执行的命令(而不是它们调用的所有命令):

跟踪添加执行源输入步骤日志\u输入
跟踪添加执行源离开步骤日志\u结果
proc log_输入{args}{
全球测井深度
增加测井深度
}
proc log_结果{cmd code result op}{
全球测井深度
如果{[incr log_depth-1]<1&&$result ne”“}{
放入stdout$结果
}
}
source theRealScript.tcl

您可能仍然会获得远远超过您想要的输出…

这个问题中的解决方案对您不起作用这一事实提供了信息:您遇到的真正问题是,Tcl命令通常不会写入stdout(除了
put
,这是它的主要工作,以及
parray
,这是一个在内部使用
put
的过程)。您使用的“write to
stdout
”只是交互式Tcl shell的一个功能

要在运行脚本时捕获所有命令的结果,需要如下包装器:

trace add execution source leavestep log_result
proc log_result {cmd code result op} {
    puts stdout $result
}
source theRealScript.tcl
你会发现它会产生大量的输出。减少输出是一件非常有用的事情,因此这会将其简化为立即执行的命令(而不是它们调用的所有命令):

跟踪添加执行源输入步骤日志\u输入
跟踪添加执行源离开步骤日志\u结果
proc log_输入{args}{
全球测井深度
增加测井深度
}
proc log_结果{cmd code result op}{
全球测井深度
如果{[incr log_depth-1]<1&&$result ne”“}{
放入stdout$结果
}
}
source theRealScript.tcl

您可能仍然会获得远远超过您想要的输出…

这个问题中的解决方案对您不起作用这一事实提供了信息:您遇到的真正问题是,Tcl命令通常不会写入stdout(除了
put
,这是它的主要工作,以及
parray
,这是一个在内部使用
put
的过程)。您使用的“write to
stdout
”只是交互式Tcl shell的一个功能

要在运行脚本时捕获所有命令的结果,需要如下包装器:

trace add execution source leavestep log_result
proc log_result {cmd code result op} {
    puts stdout $result
}
source theRealScript.tcl
你会发现它会产生大量的输出。减少输出是一件非常有用的事情,因此这会将其简化为立即执行的命令(而不是它们调用的所有命令):

跟踪添加执行源输入步骤日志\u输入
跟踪添加执行源离开步骤日志\u结果
proc log_输入{args}{
全球测井深度
增加测井深度
}
proc log_结果{cmd code result op}{
全球测井深度
如果{[incr log_depth-1]<1&&$result ne”“}{
放入stdout$结果
}
}
source theRealScript.tcl
您可能仍然会得到远远超过您想要的输出