首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在调用“`source`”命令时传递参数

如何在调用“`source`”命令时传递参数
EN

Stack Overflow用户
提问于 2013-08-05 06:59:16
回答 3查看 716关注 0票数 1

我需要从source程序中运行c++命令,并传递文件名和一些参数。有可能吗?我想在脚本中使用它们,比如命令行参数(使用argc, argv0, ...)。这里没有指定docs/tcl/source.n.html如何实现它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-05 11:00:49

在使用C或C++执行此操作时,您应该:

  1. 初始化Tcl库并创建一个Tcl解释器。
  2. 将全局变量argv0argvargc设置为普通Tcl脚本所期望的值。这正是tclsh所做的;除了以这种方式初始化之外,变量完全是普通的。
    • argv0是“主”脚本的名称,可能是您将要使用source的脚本。
    • argv是所有其他参数的Tcl列表;argc是该列表的长度。

  1. 使用Tcl_FSEvalFileEx(interp,pathPtr,encoding)执行文件;source命令是该调用的一个非常薄的包装器。您可能希望将编码参数作为NULL传递,而pathPtr参数是Tcl_Obj引用。
票数 3
EN

Stack Overflow用户

发布于 2013-08-05 08:35:49

如果您的脚本接受argv中的参数,只需在源脚本之前设置这个变量。

但是,如果这个脚本调用exit,它将终止整个进程,通常不是您想要的。你可以用奴隶插足来避免这件事。

票数 2
EN

Stack Overflow用户

发布于 2013-08-05 07:08:22

有3个预定义变量:

代码语言:javascript
运行
复制
$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.

因此,在您的示例中,假设文件源位于同一个目录中,并且将其名称作为第一个参数传递:

代码语言:javascript
运行
复制
source [lindex $argv 0]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18052234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档