2016-11-22 9 views
0

Я ищу, чтобы использовать команду unix expect для обертывания eb init.Ответьте, если хотите, динамически с интерактивным ответом

Вот API, который я бы хотел.

eb-init.exp --region=eu-central-1 --app=my-app --env=my-app-live

Вот текущий сценарий, который у меня есть:

set timeout -1 
spawn $env(SHELL) 
match_max 100000 
send -- "eb init\r" 
expect "Select a default region" 
send -- "5\r" 
expect "Select an application to use" 
send -- "1\r" 
expect "Select the default environment" 
send -- "1\r" 
send -- "exit\r" 
expect eof 

Мне нужен способ взаимодействия с ответом из ожидать и строка строка с входным аргументом от команды. Например, если следующая команда возвращается, она сопоставляется с expect "Select a default region", я хотел бы использовать аргумент eu-central-1 и получить номер 5 и динамически реагировать.

Select a default region 
1) us-east-1 : US East (N. Virginia) 
2) us-west-1 : US West (N. California) 
3) us-west-2 : US West (Oregon) 
4) eu-west-1 : EU (Ireland) 
5) eu-central-1 : EU (Frankfurt) 
6) ap-south-1 : Asia Pacific (Mumbai) 
7) ap-southeast-1 : Asia Pacific (Singapore) 
8) ap-southeast-2 : Asia Pacific (Sydney) 
9) ap-northeast-1 : Asia Pacific (Tokyo) 
10) ap-northeast-2 : Asia Pacific (Seoul) 
11) sa-east-1 : South America (Sao Paulo) 
12) cn-north-1 : China (Beijing) 
(default is 3): 

Как это возможно?

ответ

2

Try так:

set region "eu-central-1" 
expect "Select a default region" 
expect -re "\[\[:space:]]+(\[0-9]+)\\) $region *:" 
expect "(default is *):" 
send $expect_out(1,string)\r