2012-04-30 39 views
5

Khi tôi cố gắng chạy tập lệnh mong đợi sau, nó chỉ kết thúc chạy thay vì đợi đầu vào của người dùng. Ai đó có thể cho tôi biết tôi đang làm gì sai?không đợi người dùng nhập vào tập lệnh mong đợi

#!/usr/bin/expect 
puts -nonewline stdout "Enter device id:" 
flush stdout 
gets stdin id 
puts -nonewline stdout "Enter device name:" 
flush stdout 
gets stdin name 

Trả lời

6

Mong đợi thay đổi lệnh Tcl gets để nó không chờ đầu vào tiêu chuẩn; để đọc một dòng trong khi chờ đợi cho nó, bạn cần phải làm điều này thay vì gets stdin id:

# Read input to stdin 
expect_user -re "(.*)\n" 
set id $expect_out(1,string) 
+1

Ghi chú: Tôi thấy làm thế nào để có được thông tin từ người dùng trong hy vọng tài liệu , và tôi xác nhận rằng Mong đợi thay đổi hành vi chặn của 'được stdin' bằng cách thử nghiệm. Tôi đã rất ngạc nhiên bởi sự thay đổi đó. –

0

Hãy thử mã này:

expect "\\$" 
puts -nonewline "please enter a swithch user: " 
flush stdout 
set userName [gets stdin] 
puts $userName 
expect "\\$" ;# without this line, the script would exit too fast 
      ;# for the "echo hello" to be sent to stdout by bash 
      ;# and thus wont be recorded 
Các vấn đề liên quan