2016-11-22 88 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

嘗試這樣的:

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