5.3 Argumente
In diesem Lab lernen wir Argumente kennen.
Inhalt
Was sind Argumente
Argumente sind bestimmte Konfigurationen, welche einem Script oder auch einer Funktion innerhalb eines Scripts übergeben werden und das Verhalten des Scripts / der Funktion steuern. Du hast Argumente im Lab 1 bereits verwendet, z.B. indem du das Kommando ls
mit dem Argument -l
angewiesen hast, die Dateien und Ordner in einem Verzeichnis als Liste anzuzeigen. Solche Argumente können auch in eigenen Scripts verwendet werden.
Wie verwende ich Argumente
Die Verwendung von Argumenten unterscheidet sich bei Bash und Python erheblich. Wir schauen uns zuerst an, wie wir Argumente in einem Bash Script verwenden können. Grundsätzlich unterscheiden wir dabei zwischen sogenannten positional parameters
und flags
Bash: positional parameters
Auf positional parameters kann in Bash über die speziellen Variablen $0 bis $9 zugegriffen werden. Die Variable $0 enthält dabei den Pfad zum ausgeführten Script, während in den Variablen $1 bis $9 die ersten 1-9 Parameter enthalten:
./script.sh
|
|
|
|
Zusätzlich stehen noch die Variablen $*
und $@
zur Verfügung, welche sämtliche übergebenen Parameter enthalten. In $*
stehen die einzelnen Parameter in einem einzelnen String (durch Leerzeichen getrennt), während in $@
die Parameter in Form eines Arrays geführt werden.
Bash: Flags
Flags (-a
-b
usw.) können ebenfalls einem Bash Script übergeben werden. Allerdings müssen die Flags dazu im Script entsprechend geparst werden. Hierfür gibt es die integrierte Funktion getopts
:
|
|
https://www.baeldung.com/linux/use-command-line-arguments-in-bash-script#flags
Im obigen Beispielsscript können die flags -a
, -f
und -u
übergeben werden und stehen anschliessend in den entsprechenden Variablen age
, fullname
und username
zur Verfügung.
Python: sys.argv
Ähnlich zu den positional arguments in Bash, lassen sich CLI Parameter in Python Scripts über die argv
Funktion des sys
Moduls auslesen:
script.py
|
|
|
|
Python: getopts
Ebenso wie bei Bash lassen sich auch Flags verarbeiten. Dazu nutzen wir ein weiteres Python Modul: getopts
:
script.py
|
|
|
|
Wie genau das Parsen dieser Argumente funktioniert, ist aktuell zweitrangig. Wir werden im nächsten Lab genauer auf dieses Beispiel eingehen.