2011-07-03 3 views
0

У меня есть файл ожидания, который выглядит следующим образом. Я призываю сценарий с помощьюПеременная в файле ожидания

expect myfile.exp 

Я хочу, чтобы иметь возможность отправить значение 1,2,3 или 4. Существует ли понятие переменной в файле ожидать?

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" 

ответ

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" 
+0

Вместо '[lrange $ argv 0 0]' вы должны просто использовать '[lindex $ argv 0]' и т. Д. –

0

Вы хотите, чтобы это было интерактивное? Чтобы сценарий запрашивал ввод от пользователя или он зависел от какого-либо значения, которое он получает?

Запрос пользовательского ввода: http://my.safaribooksonline.com/book/operating-systems-and-server-administration/unix/9781565920903/handling-a-process-and-a-user/the_expect_user_command

Смежные вопросы