Der Shell - Befehl und alle Argumente zu diesem Befehl erscheinen als nummerieren Shell - Variablen: $0
den String - Wert des Befehls selbst, so etwas wie script
, ./script
, /home/user/bin/script
oder was auch immer. Alle Argumente erscheinen als "$1"
, "$2"
, "$3"
und so weiter. Die Anzahl der Argumente ist in der Shell-Variablen angegeben "$#"
.
Zu den gebräuchlichen Vorgehensweisen gehören Shell-Befehle getopts
und shift
. getopts
ist der C- getopt()
Bibliotheksfunktion sehr ähnlich . shift
Verschiebt den Wert von $2
nach $1
, $3
nach $2
und so weiter. $#
wird dekrementiert. Code untersucht am Ende den Wert von "$1"
, erledigt Dinge mit a case
… esac
, um eine Aktion zu bestimmen, und macht dann a shift
, um $1
zum nächsten Argument zu gelangen. Es muss immer nur prüfen $1
, und vielleicht $#
.
getopt()
ist ein sehr etablierter Standard, aber diegetopt
ausführbare Datei ist nicht für alle Distributionen / Plattformen gleich. Ich bin jetzt ein vollständig konvertiertergetopts
Benutzer, da es sich um einen POSIX-Standard handelt. Es funktioniert auch gut mitdash
, das ist meine bevorzugte Skript-ShellSie können auf übergebene Argumente zugreifen,
$n
wobein
die Argumentnummer - ist1, 2, 3, ...
. Sie übergeben die Argumente wie bei jedem anderen Befehl.quelle
Sie können die Ausgabe eines Shell-Skripts auch als Argument an ein anderes Shell-Skript übergeben.
Innerhalb von Shell-Skripten können Sie auf Argumente mit Zahlen wie
$1
für das erste Argument und$2
für das zweite Argument usw. zugreifen .Mehr zu Shell-Argumenten
quelle
Die Form
ist am bequemsten für
argv
. Das Arg-Trennzeichen ist ein Leerzeichen, das jedoch geändert werden kann. Ich erinnere mich nicht, wie ungeschickt. Dann benutzeum den Fluss zu kontrollieren. Ich gehe normalerweise nicht auf Getopts ein, wenn ein
case ... esac
Wille ausreicht.quelle
In einem Bash-Skript verwende ich persönlich gerne das folgende Skript, um Parameter festzulegen:
Bei dieser Struktur verlassen wir uns nicht auf die Reihenfolge der Parameter, da wir für jeden einen Schlüsselbuchstaben definieren. Außerdem wird die Hilfefunktion immer dann gedruckt, wenn die Parameter falsch definiert sind. Es ist sehr nützlich, wenn wir viele Skripte mit unterschiedlichen Parametern haben. Es funktioniert wie folgt:
quelle
myargument
wird$1
drinnenmyscript
.quelle
Im Shell-Skript; es wird der Variablenname $ 1. Das zweite Wort wird zum Variablennamen $ 2 und so weiter.
Weitere Informationen finden Sie im Shell-Handbuch (sh) unter http://heirloom.sourceforge.net/sh/sh.1.html
quelle
Wenn Sie mit Python argparse vertraut sind und es Ihnen nichts ausmacht, Python zum Parsen von bash-Argumenten aufzurufen, verwenden Sie bash argparse ( https://github.com/mattbryson/bash-arg-parse ).
Dieselbe Antwort finden Sie hier: https://stackoverflow.com/questions/7069682/how-to-get-arguments-with-flags-in-bash-script/50181287#50181287
quelle
quelle
2> /dev/null
, 2) fügt nichts zu den vorhandenen Antworten hinzu.