Übergeben Sie mehrere Argumente von bash an python

9

Ich habe ein kurzes Inline-Python-Skript, das ich von einem Bash-Skript aus aufrufen kann, und ich möchte, dass es eine Variable aus mehreren Wörtern behandelt (die aus $* stammt). Ich habe erwartet, dass das funktioniert:

%Vor%

aber es nicht:

%Vor%

Warum?

    
Barry 20.04.2015, 14:07
quelle

2 Antworten

10

Ich möchte erklären, warum Ihr Code nicht funktioniert.

Was Sie tun wollten, ist Folgendes:

%Vor%

Ausgabe:

%Vor%

Das Problem Ihres Codes ist, dass python -c "print '"$arg"'" als python -c "print '"A B C"'" von der Shell analysiert wird. Siehe dies:

%Vor%

Ausgabe:

%Vor%

Hier erhalten Sie einen Syntaxfehler, da die Leerzeichen die Verkettung verhindern. Daher werden die folgenden B und C"'" als zwei verschiedene Zeichenfolgen interpretiert, die nicht Teil der Zeichenfolge sind, die als Befehl an den Python Interpreter übergeben wird Zeichenfolge folgt -c als Befehl).

Zum besseren Verständnis:

%Vor%

Ausgabe:

%Vor%     
Sam Bruns 20.04.2015, 14:33
quelle
16

Das BASH-Skript ist falsch.

%Vor%

Und Ausgabe

%Vor%

Beachten Sie, dass Sie zum Verketten von zwei String-Variablen diese nicht außerhalb der String-Konstanten

ablegen müssen     
Bhargav Rao 20.04.2015 14:10
quelle