Wie kann ich in bash eine Reihe von Argumenten in beliebiger Reihenfolge haben? Wie ein Schlüssel-Wert-Paar?

8

Beispiel:

%Vor%

oder ein anderes mögliches

%Vor%

Ich möchte meinem Skript erlauben, eine Reihe von Argumenten in beliebiger Reihenfolge zu verwenden

%Vor%

Etcetera

    
stackoverflow 23.09.2011, 12:02
quelle

3 Antworten

10

werfen Sie einen Blick auf getopts

  

getopts : getopts optstring name [arg]
     Analysiere Optionsargumente.

     

Getopts wird von Shell-Prozeduren verwendet, um Positionsparameter zu analysieren       als Optionen.

     

OPTSTRING enthält die zu erkennenden Optionsbuchstaben; wenn ein Brief       wird gefolgt von einem Doppelpunkt, die Option wird erwartet, ein Argument zu haben,       was sollte durch Leerzeichen getrennt werden.

     

Bei jedem Aufruf wird getopts die nächste Option in die       Shell-Variable $ name, Initialisierungsname, falls dieser nicht existiert, und       der Index des nächsten Arguments, das in die Shell verarbeitet werden soll       Variable OPTIND. OPTIND wird jedes Mal auf 1 initialisiert, wenn die Shell oder       Ein Shell-Skript wird aufgerufen. Wenn eine Option ein Argument erfordert,       getopts platziert dieses Argument in die Shell-Variable OPTARG .

     

getopts meldet Fehler auf eine von zwei Arten. Wenn das erste Zeichen       von OPTSTRING ist ein Doppelpunkt, getopts verwendet stille Fehlerberichte. Im       In diesem Modus werden keine Fehlermeldungen gedruckt. Wenn eine ungültige Option ist       gesehen, platziert getopts das gefundene Optionszeichen in OPTARG. Wenn ein       Das erforderliche Argument wurde nicht gefunden, getopts fügt ein ': ' in NAME und ein       setzt OPTARG auf das gefundene Optionszeichen. Wenn getopts nicht drin ist       Silent-Modus, und eine ungültige Option wird gesehen, getopts platziert '?' in       NAME und Unsets OPTARG. Wenn ein erforderliches Argument nicht gefunden wird, ein '? '       ist in NAME platziert, OPTARG ist nicht gesetzt, und eine Diagnosemeldung ist       gedruckt.

     

Wenn die Shell-Variable OPTERR den Wert 0 hat, deaktiviert getopts die Option       Drucken von Fehlermeldungen, auch wenn das erste Zeichen von       OPTSTRING ist kein Doppelpunkt. OPTERR hat standardmäßig den Wert 1.

     

Getopts analysiert normalerweise die Positionsparameter ($ 0 - $ 9), aber wenn       Es werden mehr Argumente angegeben, stattdessen werden sie analysiert.

     

Beendigungsstatus :
     Gibt Erfolg zurück, wenn eine Option gefunden wird; schlägt fehl, wenn das Ende der Optionen ist       aufgetreten oder ein Fehler auftritt.

    
c00kiemon5ter 23.09.2011, 12:08
quelle
7

Sie können getopts verwenden, um Befehlszeilenargumente zu analysieren. Dieses Tutorial ist sehr nützlich, um damit zu beginnen.

    
cmbuckley 23.09.2011 12:06
quelle
3

Dieses einfache Skript verwendet die Portnummer mit p und die IP-Adresse mit i -Parameter.

%Vor%

Kann auf beide Arten ausgeführt werden:

./myscript -i 192.168.1.1 -p 1985

oder

./myscript -p 1985 -i 192.168.1.1

Bei der Ausführung wird gedruckt:

%Vor%

Auch wie auf Ссылка

erwähnt
  

Beachten Sie, dass getopts lange Optionen im GNU-Stil (--myoption) oder lange Optionen im XF86-Stil (-myoption) nicht parsen kann

Sie können also lange Zeichenketten nicht als --port oder --ip direkt mit getopts verwenden. Es gibt jedoch zusätzliche Problemumgehungen wie in diesem Link beschrieben:
Ссылка

    
Akif 07.03.2017 07:33
quelle

Tags und Links