Übergeben Sie das Bash-Argument an das Python-Skript

7

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?

    
Jimmy 15.01.2013, 15:17
quelle

4 Antworten

26

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%     
DigitalRoss 15.01.2013, 15:20
quelle
6

Verwenden Sie im Pythonscript script.py getopt.getopt(args, options[, long_options]) , um die Argumente zu erhalten.

Beispiel:

%Vor%     
wewa 15.01.2013 15:28
quelle
2

Ein sehr guter Build-in-Parser ist argparse. Yo kann es wie folgt verwenden:

%Vor%     
Uriel Fernando Sandoval 15.01.2013 15:44
quelle
1

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%     
Grambot 15.01.2013 15:21
quelle

Tags und Links