我需要source
从 c++ 程序运行命令并传递文件名和一些参数。可能吗?我想在脚本中使用它们,比如命令行参数(with argc, argv0, ...
)。http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/source.n.html这里没有具体说明怎么做。
问问题
663 次
3 回答
3
从 C 或 C++ 执行此操作时,您应该:
- 初始化 Tcl 库并创建一个 Tcl 解释器。
- 将全局变量
argv0
和设置为普通 Tcl 脚本argv
所argc
期望的值。这正是tclsh所做的;除了以这种方式初始化之外,这些变量是完全普通的。argv0
是“主”脚本的名称,它可能是您即将使用的脚本source
。argv
是所有其他参数的 Tcl 列表;argc
是该列表的长度。
- 用于
Tcl_FSEvalFileEx(interp,pathPtr,encoding)
执行文件;该source
命令是该调用的一个非常薄的包装器。您可能希望将编码参数作为传递NULL
,而pathPtr参数是一个Tcl_Obj
引用。
于 2013-08-05T11:00:49.050 回答
2
如果您的脚本接受 中的参数argv
,只需在获取此脚本之前设置此变量。
但是如果这个脚本调用exit,它会终止整个进程,通常不是你想要的。您可以使用从站 interp 来避免这种情况。
于 2013-08-05T08:35:49.753 回答
0
有 3 个预定义变量:
$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.
因此,在您的情况下,假设源文件位于同一目录中,并且其名称作为第一个参数传递:
source [lindex $argv 0]
于 2013-08-05T07:08:22.387 回答