2013-08-07 30 views
7

Một định dạng điển hình cho các đối số dòng lệnh là:Làm thế nào để định dạng Command Line Đối số chính Value Pairs

myApp --myArg=myValue 

gì nếu tôi muốn vượt qua trong một tập hợp các cặp giá trị quan trọng thông qua các dòng lệnh? Một cái gì đó như:

myApp --myList={arg1=val1;arg2=val2;arg3=val3...} 

Kể từ there seems to be no standard for this sort of thing, bất kỳ ai cũng có thể cung cấp ví dụ từ các tiện ích được sử dụng có đầu vào đối số dòng lệnh này? Tôi chọc quanh một số trang người đàn ông nhưng không tìm thấy bất kỳ trang nào.

Chỉnh sửa: Tôi tự hỏi cả cách nhập liệu phải được định dạng như thế nào và văn bản trợ giúp có thể trông như thế nào.

Trả lời

5

Tôi nghĩ rằng phần lớn phụ thuộc vào cách bạn phân tích các đối số trong chương trình của mình.

Dưới đây là một số ví dụ cho thấy chương trình chấp nhận nhiều giá trị cặp khóa-giá trị.

người đàn ông php:

--define foo[=bar] 
    -d foo[=bar] Define INI entry foo with value bar 

man git:

-c <name>=<value> 
     Pass a configuration parameter to the command. The value given will 
     override values from configuration files. The <name> is expected in 
     the same format as listed by git config (subkeys separated by 
     dots). 

Đối với cả hai, người ta có thể vượt qua nhiều -d hoặc -c đối số cho các chương trình mang đến cho bạn khả năng để cung cấp một danh sách các Key- các cặp giá trị cho các chương trình.

IMO, đây không phải là vấn đề lớn khi bạn chấp nhận danh sách các cặp khóa-giá trị cho chương trình của bạn miễn là hoạt động và được ghi lại tài liệu. :)

P.S .: Tôi nghĩ câu hỏi này sẽ phù hợp hơn được đặt trên Programmers Stack Exchange thay vì trên SO. Xem herehere.

2

Nếu ứng dụng cần rất nhiều tranh cãi, tôi sẽ sử dụng một tập tin cấu hình thay vì đi qua chúng trong dòng lệnh:

myApp --config=file.cnf

Cách tiếp cận này có những ưu điểm sau:

  • linh hoạt - bạn có thể có một loạt các cấu hình được chuẩn bị cho các lời gọi khác nhau và chỉ sử dụng chúng,
  • không có vấn đề gì với trích dẫn - luôn luôn gây phiền toái nếu đối số dòng lệnh có dấu cách, double qu otes, <,> hoặc các ký tự đặc biệt khác,
  • đơn giản - bạn kiểm soát định dạng tệp cấu hình, ví dụ: INI, JSON, XML, v.v. - nếu không dễ dàng hơn,
  • bảo mật - nếu bất kỳ đối số nào có thể nhạy cảm, nó không hiển thị từ các công cụ hiển thị đối số dòng lệnh.
Các vấn đề liên quan