Tôi đang viết một kịch bản shell với một vài biến nên được cấu hình bởi người dùng. Sẽ có một trình cài đặt để tải xuống và định cấu hình tập lệnh, có thể bằng cách đặt một loạt câu hỏi. Kịch bản trong câu hỏi là nhằm vào các nhà phát triển khác.
Điều này có thể được thực hiện theo một số cách:
Sử dụng trình giữ chỗ trong chính tập lệnh và sử dụng
sed
để thay thế chúng trong khi cài đặt (đại loại như thế này: /programming/415677/how-to-replace-placeholder-in-a-text-file )Ưu điểm: Tất cả các định nghĩa biến được chứa trong tập lệnh. Thật dễ dàng để tải xuống tập lệnh theo cách thủ công và định cấu hình các biến cho người dùng thích trình chỉnh sửa hơn trình cài đặt.
Nhược điểm: Thật khó để cấu hình lại các biến thông qua trình cài đặt một khi chúng được đặt đúng chỗ. Trừ khi tôi tạo một biểu thức chính quy phức tạp hơn sẽ dễ bị lỗi.
Sử dụng một tệp cấu hình , về cơ bản là một tập lệnh shell khác với các bài tập và sử dụng
source
để bao gồm nó. (Và có lẽ đặt nó vào~/.scriptname
? Kịch bản chính được sao chép vào/usr/local/bin
)Ưu điểm: Thật dễ dàng để cấu hình lại tập lệnh. Thậm chí có thể thêm một tham số để thực hiện điều đó từ tập lệnh chính (Có thể cũng sẽ hoạt động trong giải pháp đầu tiên, nhưng việc chỉnh sửa tập lệnh từ chính nó có vẻ không phải là một ý tưởng hay)
Nhược điểm: Tập lệnh hiện phụ thuộc vào hai tệp và người dùng được yêu cầu chạy trình cài đặt cho tệp cấu hình được tạo. Điều này có thể được giải quyết bằng cách tự động tạo tập tin cấu hình nếu không tồn tại. Nhưng việc định vị tệp cấu hình bên ngoài vẫn sẽ cồng kềnh hơn đối với người dùng chỉ muốn tải xuống tập lệnh, chỉnh sửa tệp và được thực hiện với nó.
Ngoài ra, một vài tùy chọn liên quan đến cách quản lý cấu hình của người dùng sau khi cài đặt:
Git như
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webTương tác
$ myscript config
Nhập tên máy chủ của máy chủ: example.org
Nhập đường dẫn đến proxy trên máy chủ: / home / johndoe / proxy
Nhập đường dẫn đến thư mục http trên máy chủ: / home / johndoe / webgetopts với các tùy chọn dài
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webĐơn giản
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Có cách nào khác để làm điều này mà bạn sẽ xem xét?
Bất kỳ thực hành tốt nhất, bất cứ điều gì thanh lịch?