Переменная в ожидаемом файле - PullRequest
0 голосов
/ 04 июля 2011

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

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"

Ответы [ 2 ]

1 голос
/ 04 июля 2011

Решение - использовать аргументы командной строки

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 голосов
/ 04 июля 2011

Хотите, чтобы это было интерактивным? Так что скрипт запрашивает ввод у пользователя или он должен зависеть от некоторого значения, которое он получает?

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

...