Đối với nhiều mục đích, các chức năng GNU getopt()
và getopt_long()
là những lựa chọn tốt.
GNU getopt()
dành cho các đối số tùy chọn một chữ cái và hews khá gần với hành vi tiêu chuẩn POSIX và có thể được thuyết phục để hoạt động chính xác hơn bằng cách đặt biến môi trường POSIXLY_CORRECT. Sự khác biệt là GNU getopt()
nhận ra các đối số tùy chọn sau đối số phi tùy chọn đầu tiên và cho phép các đối số để tất cả các đối số tùy chọn được xử lý trước bất kỳ đối số không tùy chọn nào. Điều này đôi khi quan trọng - mặc dù các bối cảnh có xu hướng có một chút bí truyền. Có một vài thủ thuật phụ khác có sẵn.
GNU getopt_long()
là cơ chế tốt nhất để xử lý các tùy chọn dài như --help
. Nó có thể xử lý các đối số tùy chọn, phù hợp với các tùy chọn một chữ cái và tất cả các loại thứ.
Có rất nhiều gói khác có sẵn để xử lý các tùy chọn theo nhiều cách khác nhau.
(Perl có một loạt các module getopt, phản ánh bao nhiêu nỗ lực đã được đưa vào trong những năm qua.)
Bạn có thể tìm thấy một số thông tin bổ sung hữu ích tại What is the general syntax of a Unix shell command. Bạn cũng có thể đọc đặc tả POSIX cho các quy ước dòng lệnh trong chương Utility Conventions.
Nguồn
2009-03-12 04:49:16
Bỏ phiếu bầu cho "cuộn của riêng bạn". a) Bạn học từ nó, b) thật thú vị, và c) bạn sẽ không phải lo lắng về tính di động hoặc tùy thuộc vào mã của người khác, và d) bạn biết bạn sẽ có tất cả các tính năng bạn muốn, và không có những người bạn không. Tuy nhiên, tôi nghĩ rằng tôi sẽ là thiểu số. –
@ Chris Lutz: trừ khi bạn cuộn của riêng bạn để nó tuân thủ rất chặt chẽ với tiêu chuẩn, sau đó bạn có nguy cơ sản xuất các chương trình gây khó chịu để sử dụng. Việc sử dụng trình phân tích cú pháp tùy chọn tiêu chuẩn sẽ làm giảm việc học cho mọi người khác (những người sử dụng chương trình của bạn) và thường đơn giản hóa việc bảo trì. –
Tôi vừa mới triển khai https://github.com/visionmedia/commander.ca port-ish của trình phân tích cú pháp tùy chọn ruby và nút của tôi –