Scripting 如何通过另一个脚本调用一个tcl脚本并传递参数?

Scripting 如何通过另一个脚本调用一个tcl脚本并传递参数?,scripting,command,tcl,exec,puts,Scripting,Command,Tcl,Exec,Puts,我想在另一个脚本中调用一个TCL脚本? 我尝试了以下命令: exec tclsh print.tcl print.tcl的内部写有: puts "Second script" 程序运行时没有任何错误,但不显示任何输出 有什么问题吗?该值将通过以下方式获得: set output [exec tclsh print.tcl] puts "The output was: $output" 如果希望它直接发送给用户,则需要执行一些重定向: exec tcl

我想在另一个脚本中调用一个TCL脚本? 我尝试了以下命令:

exec tclsh print.tcl
print.tcl的内部写有:

puts "Second script"
程序运行时没有任何错误,但不显示任何输出


有什么问题吗?

该值将通过以下方式获得:

set output [exec tclsh print.tcl]
puts "The output was: $output"
如果希望它直接发送给用户,则需要执行一些重定向:

exec tclsh print.tcl >@stdout
甚至可能是这样(如果脚本打印了您不想捕获的错误):

在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

它不起作用。它显示了下面的消息:无法执行“print.tcl”:没有这样的文件或目录,但是print.tcl文件存在。因此,我有一个小问题。如何使用argv将参数传递给脚本?这个显示错误
proc myProc {} {
    set ::argv [list foo bar baz]
    uplevel #0 {source print.tcl}
}
myProc