Bash getopts
Zur Navigation springen
Zur Suche springen
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.