如何在调用“source”命令时传递参数
How to pass arguments when calling `source` command
我需要从c++程序运行source
命令,并传递文件名和一些参数。有可能吗?我想在类似脚本的命令行参数中使用它们(使用argc, argv0, ...
)。http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/Tcl/source.n.html此处未指定如何执行。
当从C或C++执行此操作时,您应该:
- 初始化Tcl库并创建一个Tcl解释器
- 将全局变量
argv0
、argv
和argc
设置为正常Tcl脚本所期望的值。这正是tclsh所做的;除了以这种方式初始化之外,这些变量是完全普通的。argv0
是"主"脚本的名称,它可能是您要source
的脚本argv
是所有其它参数的Tcl列表;argc
是该列表的长度
- 使用
Tcl_FSEvalFileEx(interp,pathPtr,encoding)
执行该文件;CCD_ 11命令是围绕该调用的非常薄的包装器。您可能希望将编码参数作为NULL
传递,而pathPtr自变量是Tcl_Obj
引用
如果您的脚本接受argv
中的参数,请在获取此脚本之前设置此变量。
但如果这个脚本调用exit,它将终止整个过程,通常不是您想要的。你可以使用从属对讲机来避免这种情况。
有3个预定义变量:
$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.
因此,在您的情况下,假设源文件位于同一目录中,并且其名称作为第一个参数传递:
source [lindex $argv 0]
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 指定在用户固定我的应用程序时用于运行应用程序的命令参数
- 应用程序无法获取命令参数
- 在Visual Studio调试命令参数中逃脱
- Eclipse 强制将 -k 添加到C++构建命令参数中
- 使用CreateProcess尽可能使用单个命令参数调用exec*函数
- 如何在Visual Studio中显示命令参数
- 命令参数不会传递给 popen 中的 /bin/sh
- 命令参数中与号 (&) C++奇怪的事情
- 打开一个通过命令参数执行某些操作的函数
- 在调试模式下运行时,VS2012中的命令参数错误
- 更改系统命令参数的路径
- VC调试选项中的命令参数可以用cmake来设置吗?
- 如何使用命令参数从<自定义操作 /> 调用.exe文件
- XCode 4:文件作为命令参数
- b2 的命令参数,以便使用 Microsoft 的 Clang/C2 构建 Boost 库