Ich versuche ein Bash-Skript zu erstellen, das sein eigenes Argument an ein Python-Skript übergibt. Ich möchte, dass es so funktioniert.
Wenn ich es so laufe:
%Vor%Dann führt es innerhalb des Bash-Skripts ein Python-Skript mit dem "neuesten" Argument wie folgt aus:
%Vor%Ebenso, wenn das Bash-Skript mit dem Argument 123 ausgeführt wird, dann das Python-Skript als solches:
%Vor%Kann mir bitte jemand helfen, zu verstehen, wie ich das erreichen kann?
In diesem Fall besteht der Trick darin, so viele Argumente wie möglich zu übergeben, einschließlich des Falls, in dem es keine gibt, und eine Gruppierung beizubehalten, die in der ursprünglichen Befehlszeile vorhanden war.
Sie möchten also, dass diese drei Fälle funktionieren:
%Vor%Es gibt nicht wirklich einen natürlichen Weg dies zu tun, weil die Shell eine Makrosprache ist, also haben sie eine magische Syntax hinzugefügt, die nur DTRT ist.
%Vor%Ein sehr guter Build-in-Parser ist argparse. Yo kann es wie folgt verwenden:
%Vor% In bash wird auf Argumente, die an das Skript übergeben werden, mit der $#
-Notation zugegriffen (# ist eine Zahl. Wenn Sie $ # genau so verwenden, sollte Ihnen die Anzahl der übergebenen Argumente übergeben werden). Also, wenn Sie Argumente übergeben wollten:
Aufruf des Skripts:
%Vor%Innerhalb des Skripts:
%Vor%