2013-06-23 23 views
11

Tôi tìm thấy một (có thể đã lỗi thời và không chính xác) blog post from 2004 tuyên bố rằng không thể chạy các tập lệnh Smalltalk từ dòng lệnh. Có gì thay đổi kể từ đó, và có thể chạy các script Smalltalk từ dòng lệnh không? Tôi đã thực hiện rất nhiều tìm kiếm trên Google và tôi không tìm thấy thông tin nào về chủ đề này.Có thể chạy các tập lệnh Smalltalk từ dòng lệnh không?

Có cách nào để lưu tập lệnh Smalltalk (chẳng hạn như tập lệnh này) dưới dạng tệp hay không và sau đó chạy tập lệnh từ dòng lệnh?

Transcript show: 'This should be printed to the standard output.' printString; cr. 
+1

Bạn đang sử dụng smalltalk nào? Pharo có Coral tại http://rmod.lille.inria.fr/coral/ – msandiford

+0

@msandiford Tôi đang sử dụng GST Smalltalk, nhưng tôi cũng có thể sử dụng Pharo, tùy thuộc vào việc có bất kỳ khác biệt cú pháp nào giữa GNU Smalltalk hay không và Pharo. (Trong thực tế, tôi thậm chí không chắc chắn liệu có sự khác biệt về cú pháp đáng kể giữa mỗi triển khai Smalltalk). –

+0

@msandiford Ngoài ra, tôi vẫn không hiểu các hướng dẫn để tạo các kịch bản shell Coral. Theo [Hướng dẫn bắt đầu] (http://rmod.lille.inria.fr/coral/getting-started.html), tôi nên "đặt các tệp này vào đúng nơi trước khi tạo tập lệnh", nhưng hướng dẫn không 't giải thích nơi để đặt các tập tin. –

Trả lời

11

Pharo có hỗ trợ dòng lệnh phong nha và một zeroconf kịch bản đơn giản để cài đặt nó:

curl get.pharo.org | bash 
./pharo Pharo.image --help 
./pharo Pharo.image eval "1+2" 

Chúng tôi sử dụng những công cụ này một cách thường xuyên trên ci servers của chúng tôi.

Tay cầm dòng lệnh mới có thể được cài đặt dễ dàng bằng cách phân lớp con. Bạn sẽ tìm thấy một tài liệu một phần here.

Coral nhắm vào các giao diện phức tạp hơn và hỗ trợ phân tích cú pháp tham số phức tạp. Các công cụ dòng lệnh mặc định được giao với Pharo tuân theo một cách tiếp cận khá đơn giản và bạn phải kiểm tra và xử lý các tham số theo cách thủ công.

+0

Tài liệu bạn đã trích dẫn hiển thị bằng cách sử dụng 'stdin' với' eval', ví dụ: 'echo" 1 + 2 "| $ PHARO_VM my.image eval'. Với Pharo 6.1, nó không hoạt động dưới ubuntu 17 (lệnh bị treo). Nó đang làm việc với các biểu thức như là một đối số thông qua in Tôi đang cố gắng tìm một cách để đánh giá các kịch bản tùy ý từ một tập tin, ví dụ, 'mèo myScript | ... 'mà không cần định nghĩa trình xử lý lệnh (subclassing, vv) bên trong một hình ảnh. – Fuhrmanator

+0

OK, tôi đang sử dụng lệnh 'st' khi tôi đổi tên tập lệnh' myScript.st'. Đó là './pharo Pharo.image st myScript.st' đang làm việc với các lệnh Pharo tùy ý. Tốt đẹp! – Fuhrmanator

8

Với gst, thật đơn giản. Đặt điều này vào hi.st:

Transcript show: 'Hi!' 

Sau đó chạy gst hi.st và bạn đã hoàn tất.

Để vượt qua đối số từ dòng lệnh, bạn làm như sau:

Transcript show: 'Hi ' , Smalltalk arguments first , '!' 

Sau đó chạy gst hi.st -a World

+1

Có thể tìm thêm thông tin trong tài liệu gst: http://smalltalk.gnu.org/documentation –

0
gst - <<<"'hello' printNl" 

Đây là một mô hình phổ biến để cung cấp một kịch bản trên dòng lệnh. Nó được gọi là một chuỗi ở đây. Dấu gạch ngang đang đặt tên tệp thành đầu vào chuẩn. Và Triple ít hơn làm cho chuỗi sau một tập tin tại chỗ trên chuẩn. Bạn vẫn nhận được mở rộng tham số dòng lệnh.

Bạn có thể nhận được nhiều fancier với here documents cho phép bạn nhập vào các lệnh đa dòng trong tập lệnh hoặc ngay trên dòng lệnh có ít hơn gấp đôi.

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