【发布时间】:2020-12-17 13:56:24
【问题描述】:
我想在另一个内部调用一个 TCL 脚本? 我尝试了以下命令:
exec tclsh print.tcl
print.tcl 里面写着:
puts "Second script"
程序运行没有任何错误,但没有显示任何输出。
怎么了?
【问题讨论】:
标签: scripting command tcl exec puts
我想在另一个内部调用一个 TCL 脚本? 我尝试了以下命令:
exec tclsh print.tcl
print.tcl 里面写着:
puts "Second script"
程序运行没有任何错误,但没有显示任何输出。
怎么了?
【问题讨论】:
标签: scripting command tcl exec puts
该值将通过以下方式获得:
set output [exec tclsh print.tcl]
puts "The output was: $output"
如果你想让它直接到用户那里,你需要做一些重定向:
exec tclsh print.tcl >@stdout
甚至可能是这样(如果脚本打印出您不想捕获的错误):
exec tclsh print.tcl >@stdout 2>@stderr
在 POSIX 系统(即不是 Windows)上,您甚至可以将输出发送给用户并同时在调用脚本中捕获它:
set output [exec tclsh print.tcl | tee /dev/tty]
puts "The output was: $output"
【讨论】:
或者,第二个脚本是 Tcl 脚本,所以你可以这样做
source print.tcl
我想它会做你想做的事。
由于打印脚本需要argv,所以需要在当前脚本中设置:
set argv [list foo bar baz]
source print.tcl
如果您是从过程中调用源代码,您可能希望在顶级范围内执行打印代码,而不是在过程范围内
proc myProc {} {
set ::argv [list foo bar baz]
uplevel #0 {source print.tcl}
}
myProc
【讨论】: