如何使用 expect to spawn with arguments from 命令行?

How to use expect to spawn with arguments from command line?

假设我通过

调用my.exp
my.exp cmd a b c d ...

我想将 my.exp 的所有参数传递给 spawn。但是我找不到这样做的方法。有没有办法用期望来做到这一点?谢谢

#!/usr/bin/env expect

spawn $argv
...

您想使用 tcl 的 argument expansion 语法来执行此操作:

spawn {*}$argv

示例

my.exp:

#!/usr/bin/env expect
log_user 0
puts "Spawning '$argv'"
spawn {*}$argv
expect *foo* { puts "Got: '[string trim $expect_out(buffer)]'" }

用法:

$ ./my.exp echo foo bar
Spawning 'echo foo bar'
Got: 'foo bar'