Donnerstag, 24. Mai 2012, 15:17

Du bist nicht angemeldet.



lacarpe

ist fest eingezogen.

  • »lacarpe« ist der Autor dieses Themas

Beiträge: 509

Ubuntu: ---

Kernel: 2.6.32 (Debian Squeeze)

Desktop: Xfce

Architektur: 64-bit

  • Private Nachricht senden

1

Donnerstag, 28. August 2008, 11:01

Wie werden Hochkommata (" oder ' ) in der Shell interpretiert?

Guten Morgen zusammen,

ich habe ein Phänomen, dass ich mir nicht erklären kann. Wenn ich

Quellcode

1
vlc 'irgendein schoener film.mpg'

in der Shell ausführe, zeigt vlc diesen Film anstandslos.

Wenn ich stattdessen in einem Javaprogramm

Quellcode

1
Runtime.getRuntime().exec("vlc 'irgendein schoener film.mpg' ")

ausführe, scheint er die Hochkommata anders zu deuten, bzw. er will dann folgende drei Filme zeigen (die er natürlich nicht findet):
- 'irgendein
- schoener
- film.mpg'

Mit anderen Worten: Das Javaprogramm übermittelt die Hochkommata ordnungsgemäß, sie werden aber nicht wie in der Shell so interpretiert, dass sie den dazwischenliegenden Text zusammenhalten.

Woran kann das liegen? Vielleicht passiert in der Shell etwas Spezielles, wenn Hochkommata gesetzt werden, etwas dass man nicht sieht und das bei exec über Java eben nicht gemacht wird? (Vielleicht werden die Leerzeichen innerhalb der Hochkommata von der shell umcodiert oder so?)

Bemerkung: Das Phänomen ist dasselbe, ob ich einfache Hochkommata (') oder Doppelhochkommata (") verwende.

Viele Grüße,
lacarpe
ubuntufreund No. 30
think globally, act locally

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »lacarpe« (29. August 2008, 10:06)


basslord

Ubuntufreund

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

2

Donnerstag, 28. August 2008, 15:26

Hallo,

der Unterschied besteht darin, dass einfache Hochkommata alle Sonderzeichen vor der Interpretation durch die Shell schützen, doppelte Hochkommata dagegen gestatten die Auflösung von Variablen und Kommandos. Aber damit erzähle ich dir wohl kaum Neues ;) Außerdem scheint mir das hier auch nicht das Problem zu sein.

Vielleicht kannst du hiermit etwas anfangen:
http://forum.ubuntuusers.de/post/655912/


Gruß
Rodge
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche

lacarpe

ist fest eingezogen.

  • »lacarpe« ist der Autor dieses Themas

Beiträge: 509

Ubuntu: ---

Kernel: 2.6.32 (Debian Squeeze)

Desktop: Xfce

Architektur: 64-bit

  • Private Nachricht senden

3

Freitag, 29. August 2008, 10:05

Danke, Rodge, der link passt exact zu meinem Problem und ich konnte lösen. Der Befehl und jeder einzelne Parameter wird separat als Arrayelement übergeben. Im Beispiel:

Zitat

String[] aCommand = new String[]{"vlc","irgendein schoener film.mpg"}
Runtime.getRuntime().exec(aCommand )
ubuntufreund No. 30
think globally, act locally