2017-08-17 1 views
0

Ich versuche, eine Python-Datei schreiben, die Eingabe über die Befehlszeile und führt einige Aktionen. Die Eingabe besteht aus az, [,], (und). Ich machte Folgendes Programm nur zu prüfen, ob ich gehen könnte halten:ausführbare Python-Datei sys nicht akzeptieren '(' Zeichen

#!/usr/bin/env python 
import sys 

print str(sys.argv) 

ich habe chmod +x program und versuchte ./program qwerty (abc) [hi] Aufruf und es zurückgegeben:

-bash: Syntaxfehler in der Nähe von unerwartetem Token `(‘

gibt es ein Art der Veränderung das Programm, so dass es Klammern in Argumenten akzeptiert?

Hinweis: Ich habe auch versucht, eckige Klammern vor Klammern zu setzen, und es wird der gleiche Fehler zurückgegeben.

+4

'()' hat eine besondere Bedeutung zu Shell - es ruft den eingeschlossenen Befehl in einer Subshell. Schließen Sie Ihre Strings in doppelte Anführungszeichen ein, um die spezielle Bedeutung zu entfernen - './program qwerty" (abc) "" [hi] "' – codeforester

+0

Ich befolge eine Spezifikation und kann die Eingabe, die editierte Frage oben, nicht ändern. – jordanc

+1

Es scheitert in der Shell, bevor ** das Programm ** läuft, also nein, Sie können es nicht im Programm ändern. –

Antwort

2

Es gibt nichts, was das Skript bei der Shell-Syntax beim Aufruf des Skripts tun kann. Die Shell analysiert zuerst die Befehlszeile. Sie haben zu entkommen oder Anführungszeichen, die eine besondere Bedeutung in der Schale haben (die meisten Interpunktionszeichen enthält):

./program qwerty \(abc\) '[hi]' 
Verwandte Themen