期望文件中的变量

时间:2011-07-03 21:53:12

标签: linux expect

我有一个看起来像这样的期望文件。我使用

调用脚本
expect myfile.exp

我希望能够发送1,2,3或4的值。在expect文件中是否有变量的概念?

expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
send -s -- "1\r"
# I want to replace "1\r" above with one of the 4 possible values at runtime
expect -exact "> "
sleep .1
send -s -- "1\r"

2 个答案:

答案 0 :(得分:1)

解决方案是使用命令行参数

expect -f myfile.exp 2 3 1

这里2是传递的参数。参数在exp文件

中按如下方式处理
set var1 [lrange $argv 0 0]
set var2 [lrange $argv 1 1]
set var3 [lrange $argv 2 2]
expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
# Original code 
# send -s -- "1\r"

# Modified code
send -s -- "${var3}\r"

expect -exact "> "
sleep .1
send -s -- "1\r"

答案 1 :(得分:0)

你想要这个是互动的吗?这样脚本会请求用户输入,还是需要依赖于它收到的某个值?

请求用户输入: http://my.safaribooksonline.com/book/operating-systems-and-server-administration/unix/9781565920903/handling-a-process-and-a-user/the_expect_user_command