Bash getopts: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 32: Zeile 32:
 
*Es sorgt dafür, dass Optionen einheitlich behandelt werden und ermöglicht die Implementierung von spezifischen Aktionen für jede Option.
 
*Es sorgt dafür, dass Optionen einheitlich behandelt werden und ermöglicht die Implementierung von spezifischen Aktionen für jede Option.
 
*Es bietet auch die Möglichkeit, Standardwerte für Optionen festzulegen und mit Argumenten zu interagieren, die den Optionen folgen.
 
*Es bietet auch die Möglichkeit, Standardwerte für Optionen festzulegen und mit Argumenten zu interagieren, die den Optionen folgen.
 
+
=Ein Beispiel=
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
 
#!/bin/bash
 
#!/bin/bash

Aktuelle Version vom 6. Juni 2023, 15:36 Uhr

Grundlegendes

  • getopts ist ein Befehl in der Bash-Shell, der beim Parsen von Kommandozeilenoptionen und -argumenten hilft.
  • Es ermöglicht die einfache Handhabung von Optionen und Argumenten, die an ein Bash-Skript übergeben werden.
  • Die grundlegende Syntax von getopts lautet:
while getopts "optionen" option; do
  case $option in
    <Option1>)
      # Code für Option1
      ;;
    <Option2>)
      # Code für Option2
      ;;
    # Weitere Optionen
    *)
      # Code für unbekannte Optionen
      ;;
  esac
done

Hier sind die Schritte, die bei der Verwendung von getopts in einem Bash-Skript ablaufen

  • getopts wird in einer while-Schleife verwendet, um alle übergebenen Optionen zu verarbeiten.
  • Die Optionen werden als Zeichenkette in doppelten Anführungszeichen an getopts übergeben.
  • Innerhalb der Schleife wird der aktuelle Optionenbuchstabe in der Variablen $option gespeichert.
  • Ein case-Statement wird verwendet, um den aktuellen Optionsbuchstaben zu überprüfen und den entsprechenden Code auszuführen.
  • Du kannst für jeden Optionsbuchstaben einen separaten Codeblock angeben und verschiedene Aktionen ausführen, abhängig von der ausgewählten Option.
  • Wenn eine Option erkannt und verarbeitet wurde, wird der entsprechende Codeblock ausgeführt.
  • Wenn der Optionsbuchstabe nicht erkannt wird, kannst du einen Codeblock für unbekannte Optionen angeben, der entsprechende Fehlermeldungen ausgibt oder andere Aktionen durchführt.
  • Die Schleife wird so lange ausgeführt, bis alle übergebenen Optionen verarbeitet wurden.
  • Sobald alle Optionen verarbeitet sind, wird die Schleife beendet, und das Programm kann mit dem restlichen Code fortfahren.
  • getopts erleichtert das Parsen und Verarbeiten von Kommandozeilenoptionen in Bash-Skripten erheblich.
  • Es sorgt dafür, dass Optionen einheitlich behandelt werden und ermöglicht die Implementierung von spezifischen Aktionen für jede Option.
  • Es bietet auch die Möglichkeit, Standardwerte für Optionen festzulegen und mit Argumenten zu interagieren, die den Optionen folgen.

Ein Beispiel

#!/bin/bash
function examine()
{
FILE=$1
shift
echo "Rights on $FILE"
for k in $*
do
case $k in
 u) echo USER : $(ls -l $FILE | cut -c 1-3) ;;
 g) echo GROUP: $(ls -l $FILE | cut -c 4-6) ;;
 o) echo OTHER: $(ls -l $FILE | cut -c 7-9) ;;
esac
done
}
while getopts ugof: opt
do
   case $opt in
       u) OPT="${OPT} u";;
       g) OPT="${OPT} g";;
       o) OPT="${OPT} o";;
       f) DAT=$OPTARG;;
       ?) echo "USAGE: $0 -ugo -f FILE"; exit 2 ;;
   esac
done
examine $DAT $OPT
Erklärung
  • Das Program kann mit den Optionen -u -g -o und -f Datei aufgerufen werden.
  • Die Optionen ugo werden in der Variable $OPT "gesammelt".
  • Alle Optionen werden an die Funktion examine übergeben.
  • Die Optionen werden oben getrennt und je nach vorhandener Option werden Anweisungen ausgeführt.