2017-03-28 3 views
0

Eine Schulaufgabe wird bewertet, indem eine Ausgabe aus einem Python-Skript gedruckt und als Argument an ein kleines c-Programm übergeben wird. Leider enthält die Ausgabezeichenfolge von Python eine Registerkarte und bash erkennt sie als zwei Zeichenfolgen anstelle von einer. Wie kann ich es als eine Zeichenfolge erkennen lassen? Beachten Sie, dass ich keine Änderungen am C-Programm vornehmen kann.Übergeben der Ausgabe eines Python-Skripts, das Registerkarten als Argument in bash enthält

ein minimales Beispiel ist wie folgt:

#include <stdio.h> 
#include <string.h> 

int main(int argc, char **argv) 
{ 
    if (argc != 2) { 
     puts("Fail!"); 
     return 1; 
    } 
    puts("Success!"); 
    return 0; 
} 

Und die Ausgabe:

$ ./a.out $(python -c 'print "\'a\tb\'"') 
Fail! 
+0

Dies ist wirklich eine Bash-only Frage; es hat nichts mit Python oder C zu tun –

Antwort

2

Quote der Python-Aufruf, so dass es als ein einziges Argument erweitert hat:

./a.out "$(python -c 'print "a\tb"')" 

Die $() Umbruch vermeidet jegliche Verwechslung zwischen den inneren und äußeren Anführungszeichen, also ist dies ein Verfahren wie du gehofft hast.

Verwandte Themen