Lesen argument mit Leerzeichen im python-Skript aus einer shell-Skript
Wie lese ich ein argument mit Leerzeichen beim ausführen eines python-Skript?
UPDATE:
Sieht aus wie mein problem ist, dass ich den Aufruf der python-Skript durch ein shell-script:
Dies funktioniert:
> python script.py firstParam file\ with\ spaces.txt
# or
> python script.py firstParam "file with spaces.txt"
# script.py
import sys
print sys.argv
Aber nicht, wenn ich es durch ein script:
myscript.sh:
#!/bin/sh
python $@
Drucke: ['firstParam', 'file', 'mit', 'spaces.txt']
Aber was ich will ist:
['firstParam', 'Datei mit spaces.txt']
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
"$@"
statt:Ausgabe:
mit
/tmp/test.py
definiert als:Wenn Sie möchten, übergeben Sie den Parameter aus einem shell-script ein anderes Programm verwenden, sollten Sie
"$@"
statt$@
. Dadurch wird sichergestellt, dass jeder parameter erweitert wie ein einziges Wort, auch wenn er Leerzeichen enthält.$@
entspricht$1 $2 ...
, während"$@"
entspricht"$1" "$2" ...
.Beispielsweise, wenn Sie ausführen:
./myscript param1 "param with spaces"
:$@
erweitert werdenparam1 param with spaces
- vier Parameter."$@"
erweitert werden"param1" "param with spaces"
- zwei Parameter.