ein Bash-Skript soll seine Argumente zu einem anderen Skript übergeben, die ein Python-Skript in meinem Fall ist:Bash-Skript: Vermeiden Sie leere Zeichenkette Argumente
python test.py "$1" "$2" "$3"
Das Python-Skript, das argparse Bibliothek verwendet und wird wieder mit einem Fehler, wenn leere String-Argumente vorhanden sind, dh das Parent-Script wurde mit weniger als 3 Parametern aufgerufen. Der Grund, warum ich in diesem Beispiel ein Python-Skript verwende, ist, dass es wahrscheinlich nicht in einem untergeordneten Shell-Skript erkannt wird, wenn unbenutzte "leere Zeichenfolge" -bewertete Argumente vorhanden sind.
Eine Möglichkeit, den Fehler zu umgehen, ist die Anzahl der Argumente zu überprüfen $#
und ausdrücklich jede tragfähige Fall behandeln:
if [ $# -eq 0 ]
then
python test.py
elif [ $# -eq 1 ]
then
python test.py "$1"
elif [ $# -eq 2 ]
then
python test.py "$1" "$2"
else
python test.py "$1" "$2" "$3"
fi
Bitte beachte, dass ich die Argumente zitieren, weil sie Leerzeichen enthalten.
Welche Alternativen gibt es für diese (aufgeblähte) Lösung?
Die Lösung sollte nicht davon abhängen, die Argumentliste als Ganzes weiterzugeben. Es könnte wünschenswert sein, die Reihenfolge der Argumente zu ändern oder andere lokale Variablen als Argumente für das Python-Skript hinzuzufügen.