如何使用Expect从命令行生成参数?

问题描述

假设我叫my.exp

my.exp cmd a b c d ...

我想将my.exp的所有参数传递给生成。但是我找不到办法。有办法做到期望吗?谢谢。

#!/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'