2013-08-07 15 views
7

Typowy format argumentów wiersza polecenia:jak formatować argumentu wiersza poleceń par klucz wartość

myApp --myArg=myValue 

Co jeśli chcę przekazać w zestaw par wartości kluczowych poprzez linię poleceń? Coś jak:

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

Od there seems to be no standard for this sort of thing, może ktoś podać przykłady z dobrze używanych narzędzi, które mają tego rodzaju wejścia argument wiersza polecenia? Szukałem stron podręcznika, ale nie znalazłem żadnych.

Edycja: Zastanawiam się, jak należy sformatować dane wejściowe i jak może wyglądać tekst pomocy.

Odpowiedz

5

Myślę, że w dużej mierze zależy to od tego, jak analizujesz argumenty w swoim programie.

Oto kilka przykładów, że programy akceptują wiele wartości par klucz-wartość.

człowiek php:

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

człowiek 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). 

W obu przypadkach można przekazać wiele -d lub -c argumentów do programów, które daje możliwość, aby dostarczyć listę keystone pary wartości do programów.

IMO, to nie jest duży problem z własnym stylem akceptowania list par klucz-wartość dla twojego programu, o ile jest on działa i jest dobrze udokumentowany. :)

P.S .: Myślę, że to pytanie byłoby bardziej odpowiednie, aby umieścić je na Programmers Stack Exchange niż na SO. Zobacz here i here.

2

Jeśli aplikacja wymaga tak wiele argumentów, chciałbym użyć pliku konfiguracyjnego zamiast przekazywać je w wierszu poleceń:

myApp --config=file.cnf

Takie podejście ma następujące zalety:

  • elastyczność - możesz mieć kilka konfiguracji przygotowanych dla różnych wywołań, i po prostu z nich korzystać, bez problemów z cytowaniem - zawsze jest bolesne, jeśli argumenty wiersza poleceń mają spacje, podwójne qu otes, <,> lub inne znaki specjalne,
  • prostota - kontrolujesz format pliku konfiguracyjnego, może to być na przykład INI, JSON, XML itd. Łatwo jest go utworzyć i tak łatwo analizować jako parsowanie linii poleceń - - jeśli nie jest to łatwiejsze, jeśli dowolny argument może być wrażliwy, nie jest widoczny z narzędzi wyświetlających argumenty wiersza poleceń.