【问题标题】:how to store CMD output in one array of strings in tcl script如何将 CMD 输出存储在 tcl 脚本中的一个字符串数组中
【发布时间】:2013-04-10 07:56:48
【问题描述】:

我正在执行以下脚本:

#!/usr/bin/expect -f
#!usr/bin/expect
package require Expect
spawn telnet $serverName $portNum
expect "TradeAggregator>"
send "Clients\r"
expect "Client:"
send "1\r"
expect "1-Client>"
send "Pollers\r"
expect "Client Pollers"
send "2\r"

执行这些行后:

send "Pollers\r"
expect ">"

我在 CMD 输出中得到以下行:

"Client" Pollers
1) "ICTS_ICEFIX_Worker Worker" (ICTS_ICEFIX_Worker Poller): RUNNING
2) "NYMEX UTBAPI Worker" (NYMEX UTBAPI Poller): STOPPED

所以在这里,我想将上述输出存储在一个变量中。然后我想逐行读取它,如果任何行包含NYMEX 单词,那么我需要获取此示例中的第一个数字(1)并执行一些子字符串方法来减少刺痛。

我怎样才能在 tcl 脚本中得到这个?

【问题讨论】:

    标签: cmd tcl


    【解决方案1】:

    这里有一个解决方案:

    # After you send "2\r":    
    expect * ;# Do this to get data in expect_out
    
    foreach line [split $expect_out(buffer) \n] {
        if {[string match *NYMEX* $line]} {
            set number [scan $line "%d"] ;# Do something with that number
        }
    }
    

    讨论

    • 在你send "2\r"之后,我们需要将输出捕获到一个变量中。幸运的是,Expect 提供了内置的 expect_out 变量。我们只需要发出一个expect * 命令
    • foreach 循环将输出分成几行,并查找 NYMEX,如果找到,我们提取第一个数字并对其进行一些有用的操作。

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      相关资源
      最近更新 更多