expect:从stdin中解析变量

时间:2017-11-14 12:11:18

标签: linux bash expect

我正在运行expect脚本,该脚本将生成来自stdin的动态输入。

是否有一种方法/模式可以解决从stdin读取的概念,并在后一步中将某些相关输入存储(?)?

示例

./myexpectscript.sh arg1 arg2 ..

Running command with id 9494
Running command with id 9494
Running command with id 9494
Running command with id 9494
Command execution finished

我实际上想要存储上面的ID 9494

该脚本实际上对远程服务器运行api调用,持续时间为几秒(对于重要的事情)。

修改:以下代码段似乎无法解决问题:

expect -re Running command with id [0-9]+

set output \$expect_out(1,string)

因为它给我一个错误:

invalid command name "0-9"
    while executing
"0-9"
    invoked from within
"expect -re Running command with id [0-9]+"
    (file "./myexpectscript.sh" line 17)

也尝试过引号,即

expect -re "Running command with id [0-9]+"

1 个答案:

答案 0 :(得分:2)

使用{...}定义正则表达式,使用\d表示十进制数,然后使用(...)捕获字符串。

使用$expect_out设置带有捕获字符串的变量。

expect -re {Running command with id (\d+)} {
    set cmd_id $expect_out(1,string)
}
puts $cmd_id