Tôi đã nhận thấy rất nhiều câu hỏi và câu trả lời và bình luận thể hiện thái độ khinh bỉ (và đôi khi thậm chí là sợ) viết kịch bản thay vì một dòng. Vì vậy, tôi muốn biết:
Khi nào và tại sao tôi nên viết một kịch bản độc lập chứ không phải là "một lớp"? Hoặc ngược lại?
Các trường hợp sử dụng và ưu và nhược điểm của cả hai là gì?
Có một số ngôn ngữ (ví dụ awk hoặc perl) phù hợp hơn với một lớp so với các ngôn ngữ khác (ví dụ: python)? Nếu vậy, tại sao?
Đây chỉ là vấn đề sở thích cá nhân hay có lý do chính đáng (nghĩa là khách quan) để viết cái này hay cái khác trong hoàn cảnh cụ thể? Những lý do đó là gì?
Định nghĩa
one-liner
: bất kỳ chuỗi lệnh nào được gõ hoặc dán trực tiếp vào dòng lệnh shell . Thường liên quan đến đường ống và / hoặc sử dụng ngôn ngữ nhưsed
,awk
,perl
, và / hoặc các công cụ nhưgrep
hoặccut
hoặcsort
.Đó là việc thực hiện trực tiếp trên dòng lệnh là đặc tính xác định - độ dài và định dạng không liên quan. Một "lớp lót" có thể là tất cả trên một dòng hoặc nó có thể có nhiều dòng (ví dụ: sh for loop, hoặc mã awk hoặc mã nhúng, với nguồn cấp dữ liệu và thụt dòng để cải thiện khả năng đọc).
script
: bất kỳ chuỗi lệnh nào trong bất kỳ ngôn ngữ được giải thích nào được lưu vào một tệp và sau đó được thực thi. Một tập lệnh có thể được viết hoàn toàn bằng một ngôn ngữ hoặc nó có thể là một trình bao bọc kịch bản lệnh shell xung quanh nhiều "lớp lót" sử dụng các ngôn ngữ khác.
Tôi có câu trả lời của riêng mình (mà tôi sẽ đăng sau), nhưng tôi muốn điều này trở thành một câu hỏi và trả lời kinh điển về chủ đề này, không chỉ là ý kiến cá nhân của tôi.