【问题标题】:How to source a script file by passing arguments?如何通过传递参数来获取脚本文件?
【发布时间】:2015-08-18 02:22:01
【问题描述】:

假设我有一个 tcl 脚本,我想将一些参数传递给第二个脚本文件,该文件来自第一个 tcl:

#first tcl file

source second.tcl

我想从 first.tcl 控制 second.tcl 的流,我读到 tcl 源不接受参数。我想知道我该怎么做。

【问题讨论】:

  • 源文件有参数意味着什么?什么会处理源文件中的参数?

标签: tcl


【解决方案1】:

source 不接受任何附加参数。但是您可以使用(全局)变量来传递参数,例如:

# first tcl file
set ::some_variable some_value
source second.tcl

第二个TCL文件可以引用变量,例如:

# second tcl file
puts $::some_variable

备注:
源文件意味着源脚本的内容在当前上下文中执行。这意味着源脚本可以访问该上下文中存在的所有变量。上面的代码是一样的:

# one joint tcl file
set ::some_variable some_value
puts $::some_variable

【讨论】:

  • 没错!但是请解释一下“::”的含义。我可以省略吗?它有什么用?
  • 在该示例中,您可以省略 ::。它只是意味着这个变量是在全局命名空间中创建的。
【解决方案2】:

关于“::”的事情——见解释here(对不起,我还没有足够的代表离开cmets)。

我还应该补充一点,最初的问题讨论了一个看起来很奇怪的问题:似乎最好在您的第二个源文件中提供一个特定的过程,该过程将设置与定义的内容有关的状态那个脚本。 比如:

source file2.tcl
setup_state $foo $bar $baz

使[source] 的行为基于某些全局变量而有所不同,这对我来说太晦涩难懂了。当然,您可能有正当理由这样做,但无论如何......

【讨论】:

  • 我完全同意,通常最好在源脚本中指定一个过程并使用参数调用该过程。
猜你喜欢
  • 1970-01-01
  • 2018-10-08
  • 2015-07-12
  • 2023-03-05
  • 2019-05-25
  • 2021-03-09
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多