2010-09-19 23 views
8

Tôi ngạc nhiên bởi cách Mong đợi (TCL) có thể tự động hóa nhiều thứ tôi thường không thể làm.Các giải pháp/ngôn ngữ khác vượt trội so với kỳ vọng dựa trên TCL?

Tôi nghĩ mình có thể tìm hiểu sâu hơn về Kỳ vọng bằng cách đọc một cuốn sách, nhưng trước khi tôi làm điều đó, tôi muốn hỏi xem có những giải pháp/ngôn ngữ nào khác có thể làm những gì Mong đợi không?

Ví dụ: Tôi đã đọc rằng mọi người so sánh Mong đợi với Awk và cũng Perl.

Awk và Perl có thể làm điều tương tự không?

Còn các ngôn ngữ khác như Python và Ruby thì sao?

Mong đợi công cụ tự động hóa thực tế hoặc có các giải pháp/ngôn ngữ khác vượt trội hơn?

+0

Tôi nghĩ rằng đó là thực tế vì nó là cái đầu tiên và dựa trên TCL vốn/khá phổ biến trong một số vòng kết nối, ví dụ: công cụ nhúng như bộ định tuyến của Cisco. Vì vậy, nếu bạn đã biết TCL để cấu hình router, tại sao không sử dụng một khung công tác tự động hóa tương thích với nó? –

+4

Mong đợi đã trở thành tiêu chuẩn trong những điều như vậy. Bạn có thể tìm thấy triển khai Mong đợi như được hiển thị trong các câu trả lời, nhưng tôi nghi ngờ bạn sẽ tìm thấy một cái gì đó _superior_. –

+1

Không phải sách "a", "cuốn sách". [Mong đợi cuốn sách] (http://oreilly.com/catalog/9781565920903) vẫn được đánh giá rất cao, mặc dù những gì nó nói về Tcl là hơi lỗi thời. (Vâng, những gì bạn mong đợi cho một cuốn sách về phần mềm máy tính đó là cũ?) –

Trả lời

9

Có nhiều đến nó.

Thẳng thắn, kỳ vọng ban đầu - kỳ vọng Tcl - là tốt nhất. Nó hỗ trợ tốt hơn "tương tác" và lập dị pty khác nhau hơn bất kỳ người kế nhiệm nào của nó. Nó không có cấp trên, cho những gì nó làm.

BAO GIỜ, cùng một lúc, hầu hết người dùng Mong đợi khai thác một phần nhỏ các khả năng của Expect rằng ưu thế kỹ thuật này là vấn đề thờ ơ với họ. Trong hầu hết các trường hợp, tôi khuyên người nào đó đến từ Perl sử dụng Expect.pm, một người quen thuộc với Python dựa vào Pexpect, v.v.

So sánh Naive của Perl với "... Awk và Perl" cũng không được thành lập.

Trong phần tóm tắt, tất cả các ngôn ngữ kịch bản phổ biến - Lua, awk, sh, Tcl, Ruby, Perl, Python, ...-- đều giống nhau. Mong đợi một chút nhưng rất hiệu quả mở rộng cốt lõi chung này theo hướng nhận thức của pty (có nhiều hơn một chút cho câu chuyện mà chúng ta có thể bỏ qua cho thời điểm này). Nói chung, nếu tự động hóa của bạn liên quan đến việc nhập mật khẩu vô hình, bạn muốn Mong đợi. Awk và Perl KHÔNG xây dựng trong khả năng này.

Có các công cụ tự động hóa khác cho các ngữ cảnh khác.

+0

Bạn đang nói về công cụ tự động hóa nào khác? –

+0

"Lua, awk, sh, Tcl, Ruby, Perl, Python, ...-- là về cùng" ý kiến ​​cá nhân của tôi là bạn phải ra khỏi tâm trí của bạn để so sánh các ngôn ngữ chính thức như Lua, Ruby và Python với awk và sh. – aaronasterling

+1

@Aaron: Tôi thấy bạn không nhìn chi tiết vào sự điên rồ rùng rợn đó là 'autoconf'… (Chúng là tất cả các ngôn ngữ lập trình thực sự - không chỉ hoàn thiện, mà còn được sử dụng trong thế giới thực - nhưng họ có các hoạt động cơ bản khác nhau và các lĩnh vực ứng dụng khác nhau.) –

2

Check-out Pexpect cho Python

+0

Có vẻ unmaintained cho 2,5 năm –

7

Check-out Expect cho Perl

+0

Người ta có thể cho rằng việc thực hiện perl không phải là cấp trên mỗi lần, chỉ tương tự như trong chức năng. –

4

ajsie hỏi, "Bạn đang nói về công cụ tự động hóa nào khác?"

Tôi sẽ trả lời một câu hỏi khác: "Tôi nghĩ đến những bối cảnh nào khác"? Câu trả lời: bất kỳ môi trường tương tác nào khác hơn là một stdio. Mong đợi là KHÔNG cho tự động hóa các giao diện điểm-và-nhấp chuột, ví dụ. Mong đợi cũng không có sẵn cho các ứng dụng Win * non-console, ngay cả khi chúng trông như thể chúng là định hướng ký tự (tồn tại như vậy).

Thực hiện phản đối thú vị: Mong đợi để tự động hóa thiết bị lập dị cho phép điều khiển bằng kết nối giống như thuật ngữ. Nếu động cơ diesel của bạn (hoặc, thông thường hơn, telecomm iron) nói rằng nó có thể được theo dõi bằng cách móc lên một quá trình giống như telnet (thậm chí thông qua một dòng nối tiếp kiểu cũ), bạn đang ở trong một miền mà Expect có cơ hội để làm việc kỳ diệu của nó.

Các vấn đề liên quan