Scripting 如何通过另一个脚本调用一个tcl脚本并传递参数?
我想在另一个脚本中调用一个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
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