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