【问题标题】:Expect script create list and append to it期望脚本创建列表并附加到它
【发布时间】:2021-06-27 10:24:30
【问题描述】:

我目前正在尝试在期望脚本中创建一个列表并稍后填充它

我可以如下声明和初始化列表

#!/usr/bin/expect

set matchList [list test1 test2]

foreach elem $matchList {
    puts $elem
}

结果如下

$ ./tmp.expect 
test1
test2

但是我找不到将新字符串正确附加到列表的方法

我尝试了几种语法却找不到正确的方法

  • set matchList [list $matchList test3]

认为'test1 test2'是第一个元素,'test3'是第二个

$ ./tmp.expect 
test1 test2
test3
  • set matchList [list [foreach elem $matchList { puts $elem } ] test3]

设置第三个元素为空字符串,'test3'为第四个元素

$ ./tmp.expect 
test1
test2

test3
  • set matchList [list [foreach elem $matchList { puts $elem } ]test3]

通过删除foreach 块之后的空格,列表被正确填充。但是,做这么简单的任务似乎有点矫枉过正。

$ ./tmp.expect 
test1
test2
test3

有人知道如何正确地将列表元素逐个元素填充到期望脚本中吗?

【问题讨论】:

  • 看看lappend命令。
  • 非常感谢,确实效果很好。您应该添加一个答案,以便我接受它
  • 不是此任务的合适答案,但是当您需要将列表扩展为单个元素时,请使用 the {*} syntax -- set matchList [list {*}$matchList test3] -- 但当然,请在此处使用 lappend
  • 期望使用 Tcl。你需要先学习 Tcl。 tcl.tk/doc

标签: list automation scripting tcl expect


【解决方案1】:

在 Tcl 中将元素添加到列表末尾的正确方法是使用lappend;第一个参数是包含列表的变量的名称,第二个和后续参数是要附加的值:

lappend matchList test3

即使值中嵌入了元字符,这也有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多