【问题标题】:exec not working in expect scriptexec 在期望脚本中不起作用
【发布时间】:2011-04-19 19:35:29
【问题描述】:

我正在编写我的第一个期望脚本,所以我可能遗漏了一些明显的东西,但我发现以下内容非常令人费解:

$ expect
expect1.1> exec echo a
a
expect1.2>
$ cat > test.exp
exec echo a
$ expect test.exp
$

如果我运行 expect 并让它手动执行某些东西,它就可以工作。如果我将相同的命令放在脚本中,它就不起作用。怎么回事?

【问题讨论】:

    标签: exec tcl expect


    【解决方案1】:

    请注意,expect 本质上是 Tcl 的扩展。 Tcl 的exec 执行外部命令,捕获输出并将其作为值返回——它确实将其发送到 stdout,除非您指示它这样做。但是,交互式 Tcl(或期望)会话将输出打印到标准输出为了方便

    你的脚本应该是:

    puts [exec echo a]
    # or
    set output [exec echo a]
    puts $output
    

    我假设“echo a”是更复杂的外部命令的占位符。如果你只是想打印一些东西:

    puts "this is something"  ;# the Tcl way
    send_user "this is too\n" ;# the expect way
    

    如果您对 Tcl 不熟悉并且期望如此,那么您应该首先learn Tcl

    【讨论】:

    • 感谢您的解释。你说得对,我也是 Tcl 的新手。老实说,我并不想学习如何在 Tcl 中编程。我只是想解决一个实际问题,并期望听起来是适合这项工作的工具。也许这种努力更适合 superuser.com。
    • @LaC,我建议学习 Tcl(不会花很长时间),因为它会让你期望的编程变得更容易tons
    • 还有一件事:不要使用“”来包装命令。否则,它将失败。至少,在我的情况下它失败了。
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2015-08-25
    • 2014-01-16
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多