我需要从source程序中运行c++命令,并传递文件名和一些参数。有可能吗?我想在脚本中使用它们,比如命令行参数(使用argc, argv0, ...)。这里没有指定docs/tcl/source.n.html如何实现它。
发布于 2013-08-05 11:00:49
在使用C或C++执行此操作时,您应该:
argv0、argv和argc设置为普通Tcl脚本所期望的值。这正是tclsh所做的;除了以这种方式初始化之外,变量完全是普通的。argv0是“主”脚本的名称,可能是您将要使用source的脚本。argv是所有其他参数的Tcl列表;argc是该列表的长度。
Tcl_FSEvalFileEx(interp,pathPtr,encoding)执行文件;source命令是该调用的一个非常薄的包装器。您可能希望将编码参数作为NULL传递,而pathPtr参数是Tcl_Obj引用。发布于 2013-08-05 08:35:49
如果您的脚本接受argv中的参数,只需在源脚本之前设置这个变量。
但是,如果这个脚本调用exit,它将终止整个进程,通常不是您想要的。你可以用奴隶插足来避免这件事。
发布于 2013-08-05 07:08:22
有3个预定义变量:
$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.因此,在您的示例中,假设文件源位于同一个目录中,并且将其名称作为第一个参数传递:
source [lindex $argv 0]https://stackoverflow.com/questions/18052234
复制相似问题