Hi,
Wie übergebe ich Zeilenumbrüche an ein Programm per Parameter auf der Shelll? Ich habe schon \n mit doppel, einfach und keinfach Quotierung ausprobier - ohne Erfolg. Interessanterweise wird \\ aber dennoch als \ maskiert dargestellt. Zur Anzeige des Parameters verwende ich ein Tkinter Label.
Und nun habe ich doch schon die Lösung gefunden. Es ist eine tolle Möglichkeit Forenbeiträge zu schreiben um dabei ein Problem zu reflektieren
Da ich die Frage nun schon formuliert habe werde ich den Post gleich mit Antwort versehen.
Also, es besteht die Möglichkeit auf der Shell mithilfe einer Datei foo die bereits richtige Zeilenumbrüche enthält und dem Befehl
>python programm "$(cat foo)"
den Text der Datei samt Zeilenumbrüchen anzuzeigen.
Für Nicht-Linux-Nutzer:
cat ist ein Tool, welches Dateien, deren Namen man als Parameter übergibt, auf der Shell ausgeben kann.
>cat foo
Gibt also den Text der Datei foo direkt auf der Shell aus.
Durch die Klammerung $( Befehl ) erreicht man, dass Befehle ausgeführt werden, obwohl sie z.B. wie hier als Parameter übergeben werden. $(cat foo) muss man sich hier also als Stellvertreter für den gesamten Text in der Datei foo denken.
Und schließlich sind die Doppelten Anführungszeichen wichtig dafür, dass der Gesamte Inhalt der Datei als ein Parameter behandelt wird.
Normalerweise sind ja schon
Hallo Welt!
zwei Parameter, weil diese auf der Shell mit Leerzeichen getrennt werden können. Damit es also zu einem Parameter wird:
"Hallo Welt!"
bzw. "$(cat foo)"
Falls jemand eine andere Lösung kennt würde mich diese trotzdem Interessieren. Vermutlich lässt sich der Umweg über die Datei vermeiden.
Schönen Abend,
Boa
Shell: Parameter mit Zeilenumbruch übergeben
- noisefloor
- User
- Beiträge: 3858
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was ist denn der Sinn der Sache? Das steht nirgendwo... Willst du die Daten im Python-Programm verarbeiten, die cat ausspuckt? Das geht sicherlich auch besser...
BTW: der eigentliche Sinn von cat ist _nicht_, Dateien auszugeben. Stichwort: useless use of cat.
Gruß, noisefloor
was ist denn der Sinn der Sache? Das steht nirgendwo... Willst du die Daten im Python-Programm verarbeiten, die cat ausspuckt? Das geht sicherlich auch besser...
BTW: der eigentliche Sinn von cat ist _nicht_, Dateien auszugeben. Stichwort: useless use of cat.
Gruß, noisefloor
noisefloor hat geschrieben:Hallo,
was ist denn der Sinn der Sache? Das steht nirgendwo... Willst du die Daten im Python-Programm verarbeiten, die cat ausspuckt? Das geht sicherlich auch besser...
Hi noisefloor,
Ich habe mir unter Windows ein Python Programm geschrieben, welches ein Popup-Fenster erscheinen lässt. Und der Bequemlichkeit Halber noch ein Wrapper Skript, damit ich das Programm ohne "python " prefix aufrufen kann. In dem Fenster werden dann die Informationen ausgegeben, die per Parameter übergeben werden.
Das ist praktisch, wenn man über cygwin mit cron arbeitet und über etwas informiert werden will wie bei mir z.B. Updates einer Seite ohne RSS-Feeds und ungewöhnliches Verhalten beim testen meiner Webseite. Obwohl es für beide Fälle auch mehrere andere Tools gibt, denke ich, dass sich der Aufwand, der Dank Google C&P recht klein war, gelohnt hat und sich weiterhin lohnen wird
Der Sinn des Skriptes besteht genaugenommen darin mit möglichst wenig Aufwand eine unscheinbare graphische Meldung mit Text auf den Monitor zu bringen. So ein Windows Popup von der Statusleiste wäre aber nochmals cooler, falls jemand weiß wie ich das ohne viel Programmierung und Dokulesen hinbekomme Aber das ist im Gegenzug wieder C/Delphi/wasauchimmer und nicht mehr so schön portabel wie python.
noisefloor hat geschrieben:BTW: der eigentliche Sinn von cat ist _nicht_, Dateien auszugeben. Stichwort: useless use of cat.
Ja, ich habe mir schon überlegt das genauer auszuführen, habe mich dann aber doch auf die von mir genutzte und in diesem Kontext auch sinnvolle Eigenschaft beschränkt den Dateiinhalt auf die Standardausgabe zu schreiben.
...Ich meine natürlich, so ist es viiiiel hübscher und ich tue es weil ich _kann_
Ne, die useless use of * Texte im Netz kann ich ebenfalls sehr empfehlen, für jeden der ein wenig Erfahrung mit der Shell gesammelt hat.
Grüße und gute Nacht,
Boa
- noisefloor
- User
- Beiträge: 3858
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Hm? Wenn du python regulär unter Windows installiert hast, werden alle Dateien mit Endung .py so wie so per Python-Interpreter ausgeführt. Und wenn du den richtigen She-Bang in der 1. Skriptzeile hast sollte das auch klappen.Und der Bequemlichkeit Halber noch ein Wrapper Skript, damit ich das Programm ohne "python " prefix aufrufen kann.
Gruß, noisefloor
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Sofern die Datei ausfuehrbar ist.noisefloor hat geschrieben:Und wenn du den richtigen She-Bang in der 1. Skriptzeile hast sollte das auch klappen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Oh, Danke. Unter Cygwin klappt es mitnoisefloor hat geschrieben:Hallo,
Hm? Wenn du python regulär unter Windows installiert hast, werden alle Dateien mit Endung .py so wie so per Python-Interpreter ausgeführt. Und wenn du den richtigen She-Bang in der 1. Skriptzeile hast sollte das auch klappen.
#!/usr/bin/env python
Grüße,
Boa