【问题标题】:Expect argument handling期望参数处理
【发布时间】:2009-10-28 11:35:11
【问题描述】:

我想创建一个通过 telnet 连接到服务器并进行一些授权的期望脚本。不过,我在使用脚本参数时遇到了问题。根据 man 我预计这会起作用:

#!/usr/bin/expect -f
spawn telnet $argv1 5038
...

不幸的是我回来了can't read "argv1": no such variable。怎样才能做到这一点?

【问题讨论】:

  • 也许你应该在 serverfault.com 上问这个
  • 为什么?这是一个关于expect / tcl编程的问题。

标签: tcl expect arguments


【解决方案1】:

命令行参数以变量 argv 中的列表形式提供,您可以使用 lindex 从该列表中获取元素,因此如果第一个参数是要远程登录的主机,请执行以下操作:

spawn telnet [lindex $argv 0] 5038

参见Shells 中的Shell 提供的变量Lists 中的lindex

【讨论】:

    【解决方案2】:

    $argv 是一个包含命令行参数的 Tcl 列表,索引从 0 开始。你想要:

    [lindex $argv 0]
    

    【讨论】:

    • 你赢了 2 分钟 :) 谢谢。在 man 中有一个例子提到了 $argv0,这让我很困惑。
    • 我也是(被这个例子弄糊涂了)
    【解决方案3】:

    当我尝试在 proc 中使用 $argv0 时,遇到了类似的错误 can't read "argv0": no such variable。解决方案是使用 $::argv0 从全局命名空间显式访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多