Zum Inhalt springen

Getopts: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „'''topic''' kurze Beschreibung = Beschreibung = = Installation = = Syntax = == Parameter == == Optionen == = Konfiguration = = Anwendungen = = Links = == Date…“
 
K Textersetzung - „–“ durch „-“
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' kurze Beschreibung
'''topic''' - Beschreibung


= Beschreibung =
= Beschreibung =
= Installation =
= Installation =
= Syntax =
= Syntax =
== Parameter ==
== Argumente ==
== Optionen ==
== Optionen ==
= Konfiguration =
= Konfiguration =
= Anwendungen =
= Anwendung =
= Links =
= Links =
== Dateien ==
== Dateien ==
== Man-Pages ==
== Man-Page ==
== Intern ==
== Intern ==
== Weblinks ==
== Weblinks ==
Zeile 42: Zeile 42:


* Jeder Programmierer kennt den Aufwand beim Parsen der an ein Programm übergebenen Argumente und Optionen. Sind die Optionen erlaubt? Stimmt die Reihenfolge? Ist das Argument zulässig?...?  
* Jeder Programmierer kennt den Aufwand beim Parsen der an ein Programm übergebenen Argumente und Optionen. Sind die Optionen erlaubt? Stimmt die Reihenfolge? Ist das Argument zulässig?...?  
* Die meisten Programmiersprachen bringen in ihrem Sprachschatz eine Funktion mit, die eine solche Auswertung wesentlich vereinfacht. Die Funktion der Bash ist »getopts«.  
* Die meisten Programmiersprachen bringen in ihrem Sprachschatz eine Funktion mit, die eine solche Auswertung wesentlich vereinfacht. Die Funktion der Bash ist ''getopts''.  
* Dieses Kommando erlaubt einem Shellskript die unter Unix übliche Gruppierung von Optionen zu verwenden. Anstatt "-l -a -z" kann auch "-laz" oder "-a -lz"... geschrieben werden.  
* Dieses Kommando erlaubt einem Shellskript die unter Unix übliche Gruppierung von Optionen zu verwenden. Anstatt "-l -a -z" kann auch "-laz" oder "-a -lz"... geschrieben werden.  
* Solche Angaben über die bereits besprochenen Positionsparameter auszuwerten, ist zwar denkbar, aber mehr als verzwickt.  
* Solche Angaben über die bereits besprochenen Positionsparameter auszuwerten, ist zwar denkbar, aber mehr als verzwickt.  
* Im Zusammenhang mit der Bashprogrammierung werden wir »getopts« extensiv verwenden, an dieser Stelle soll ein kleines Beispiel das Gefühl für die Anwendung schulen.  
* Im Zusammenhang mit der Bashprogrammierung werden wir ''getopts'' extensiv verwenden, an dieser Stelle soll ein kleines Beispiel das Gefühl für die Anwendung schulen.  
* Ein Skript soll die Optionen "-a", "-l", "-F" und "-f <Datei>" verstehen.  
* Ein Skript soll die Optionen "-a", "-l", "-F" und "-f <Datei>" verstehen.  
* Beachten Sie, dass "-f" die Angabe eines Arguments erfordert. Die notwendige Zeichenkette der OPTIONEN ist "alf:F".  
* Beachten Sie, dass "-f" die Angabe eines Arguments erfordert. Die notwendige Zeichenkette der OPTIONEN ist "alf:F".  
* Die Reihenfolge der Optionen ist unwichtig, entscheidend ist der Doppelpunkt hinter "-f:", der »getopts« mitteilt, dass dieser Option ein Argument folgen muss:  
* Die Reihenfolge der Optionen ist unwichtig, entscheidend ist der Doppelpunkt hinter "-f:", der ''getopts'' mitteilt, dass dieser Option ein Argument folgen muss:  


  '''cat parseline'''
  '''cat parseline'''
Zeile 65: Zeile 65:
  Option a
  Option a
  Option F
  Option F
  ./parseline: option requires an argument f
  ./parseline: option requires an argument - f
   
   
  '''parseline -f so_gehts -l'''
  '''parseline -f so_gehts -l'''
Zeile 75: Zeile 75:
* In Shellskripten wird man Fehlermeldungen von getopts abfangen.  
* In Shellskripten wird man Fehlermeldungen von getopts abfangen.  
* Dies geht entweder über die Umleitung der Standardfehlerausgabe oder durch Setzen der Variable OPTERR auf 0.
* Dies geht entweder über die Umleitung der Standardfehlerausgabe oder durch Setzen der Variable OPTERR auf 0.
[[Kategorie:Bash/Builtin]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:Bash/Scripting]]

Aktuelle Version vom 11. Mai 2025, 20:42 Uhr

topic - Beschreibung

Beschreibung

Installation

Syntax

Argumente

Optionen

Konfiguration

Anwendung

Links

Dateien

Man-Page

Intern

Weblinks

Kontrollfragen

Testfrage 1

Testfrage 2

Testfrage 3

Testfrage 4

Testfrage 5


getopts

$ getopts OPTIONEN Variable
  • Jeder Programmierer kennt den Aufwand beim Parsen der an ein Programm übergebenen Argumente und Optionen. Sind die Optionen erlaubt? Stimmt die Reihenfolge? Ist das Argument zulässig?...?
  • Die meisten Programmiersprachen bringen in ihrem Sprachschatz eine Funktion mit, die eine solche Auswertung wesentlich vereinfacht. Die Funktion der Bash ist getopts.
  • Dieses Kommando erlaubt einem Shellskript die unter Unix übliche Gruppierung von Optionen zu verwenden. Anstatt "-l -a -z" kann auch "-laz" oder "-a -lz"... geschrieben werden.
  • Solche Angaben über die bereits besprochenen Positionsparameter auszuwerten, ist zwar denkbar, aber mehr als verzwickt.
  • Im Zusammenhang mit der Bashprogrammierung werden wir getopts extensiv verwenden, an dieser Stelle soll ein kleines Beispiel das Gefühl für die Anwendung schulen.
  • Ein Skript soll die Optionen "-a", "-l", "-F" und "-f <Datei>" verstehen.
  • Beachten Sie, dass "-f" die Angabe eines Arguments erfordert. Die notwendige Zeichenkette der OPTIONEN ist "alf:F".
  • Die Reihenfolge der Optionen ist unwichtig, entscheidend ist der Doppelpunkt hinter "-f:", der getopts mitteilt, dass dieser Option ein Argument folgen muss:
cat parseline
#!/bin/sh

while getopts alf:F Optionen; do
   case $Optionen in
      a) echo "Option a";;
      l) echo "Option l";;
      f) echo "Option f Argument ist $OPTARG";;
      F) echo "Option F";;
   esac
done

parseline -aF -f
Option a
Option F
./parseline: option requires an argument - f

parseline -f so_gehts -l
Option f Argument ist so_gehts
Option l
  • Benötigt eine Option ein Argument, kann auf dieses über die Variable OPTARGS zugegriffen werden
  • OPTIND enthält zu jedem Zeitpunkt den Index auf die nächste von getopts zu betrachtende Option.
  • In Shellskripten wird man Fehlermeldungen von getopts abfangen.
  • Dies geht entweder über die Umleitung der Standardfehlerausgabe oder durch Setzen der Variable OPTERR auf 0.