我正在运行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]+"
答案 0 :(得分:2)
使用{...}
定义正则表达式,使用\d
表示十进制数,然后使用(...)
捕获字符串。
使用$expect_out
设置带有捕获字符串的变量。
expect -re {Running command with id (\d+)} {
set cmd_id $expect_out(1,string)
}
puts $cmd_id