[Java] Problem bei Stringübergabe in die Shell

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java_problem_bei_stringuebergabe_in_die_shell_192677/page_1 - zur Vollversion wechseln!


Burschi1620 schrieb am 10.03.2008 um 19:28

Hallo,
ich bräuchte da mal Hilfe, sitz schon den ganzen Tag dahinter und nichts geht.

OS: Ubuntu
Sprache ist Java
Was ich in der Shell aufrufen möchte: scmxx

Command zum Senden einer SMS:

Code:
 scmxx --device /dev/ttyUSB0 --send --sms --direct --number=*TELEFONnUMMER* --text= *NACHRICHT* 

Funktioniert prima in C, PHP und natürlich in der Shell selbst.
Beispiel für PHP:
Code:
scmxx --device /dev/ttyUSB0 --send --sms --direct --number=\"$tel_nummer\" --text=\"$tel_text\" 2>&1");
Also wie man da sieht haben die Variablen vorne und hinten Hochkommas, sollen eben Strings sein (Nachricht zum Beispiel)

Problem ist nun Folgendes:
Wenn ich via Java diesen Command in der Shell ausführen möchte versteht er die Leerzeichen in der Nachricht nicht. Also "Ich bin ein Testtext" hört schon bei 'Ich' auf, ab dem Leerzeichen wird abgeschnitten und es kommt nichts mehr weiter.

Shellcommand aufruf via:
Code:
 Process p = Runtime.getRuntime().exec(*COMMAND*);

Versuche:
Code:
"scmxx --device /dev/ttyUSB0 --send --sms --direct --number=" + nummer + " --text=\"" + nachricht + "\""
"scmxx --device /dev/ttyUSB0 --send --sms --direct --number=" + nummer + " --text=" + nachricht + ""
"scmxx --device /dev/ttyUSB0 --send --sms --direct --number=" + nummer + " --text=\"Bla bla\""
"scmxx --device /dev/ttyUSB0 --send --sms --direct --number=" + nummer + " --text=\"Bla\\ bla\""
"scmxx --device /dev/ttyUSB0 --send --sms --direct --number=" + nummer + " --text=Bla\\ bla"
Auch schon versucht im String nachricht selbst \" einzufügen, aber die werden sofort als " interpretiert und via SMS mitgeschickt, dennoch der String abgeschnitten.
--unicode bei scmxx half leider auch nichts.

Ich hoffe ich hab alles gesagt und hoffe, dass jemand von euch die Lösung kennt - bin am Verzweifeln :(

edit: ha die neue Codeansicht ist feiner :)


Nico schrieb am 10.03.2008 um 21:59

und das einsetzen des unicode zeichens für das leerzeichen hilft auch nix?


Burschi1620 schrieb am 11.03.2008 um 00:05

Zitat von Nico
und das einsetzen des unicode zeichens für das leerzeichen hilft auch nix?
Danke für den Vorschlag, nur leider funktioniert das auch nicht. Wird wieder geschluckt. Ich spring heut noch an die Wand wegen dem Schmarrn... :(


that schrieb am 11.03.2008 um 01:03

Schon mal mit dem exec() probiert, das ein String[] erwartet?


Burschi1620 schrieb am 11.03.2008 um 12:56

Ja, Programm getrennt von Argumenten. Programm getrennt von einzeln getrennten Argumenten auch.

edit:

Zitat
Pass in the environment variables in the form name=value. If you use the version of exec() with a single string for both the program and its arguments, note that the string is parsed using white space as the delimiter via the StringTokenizer class.
http://www.javaworld.com/javaworld/...1229-traps.html
Geht aber dennoch nicht wenn Programm und Argumente getrennt sind :(


Burschi1620 schrieb am 14.03.2008 um 21:01

Push, meine derzeitige Pfuschlösung is net das Wahre :D


gue schrieb am 17.03.2008 um 08:33

Probiers mal so:

Code:
ProcessBuilder pb = new ProcessBuilder("scmxx", /* ... argumente als strings */,
         "--text=\\\"" + nachricht + "\\\"");
pb.start();
So geht es unter Windows. Vielleicht versteht es scmxx auch so:
Code:
ProcessBuilder pb = new ProcessBuilder("scmxx", /* ... argumente als strings */,
         "--text=" + nachricht);
pb.start();
Falls so Anführungszeichen in der Nachricht vorkommen musst du dir natürlich nochmal was einfallen lassen ;)


Burschi1620 schrieb am 17.03.2008 um 13:11

Danke, schau ich mir gegen Abend an. Meld mich dann


Burschi1620 schrieb am 18.03.2008 um 23:48

Ok hab das getestet.
Funktioniert leider auch nicht. Also weder Vorschlag 1 noch 2.

Generell kommts so vor als würde er den Command einfach schlucken sobald er in "Programm", "Argumente" geteilt wird. (Kein error, aber auch keine SMS :D)
Ich habs auch mal ohne Teilung versucht und da wirft er mir IO Exceptions zurück. Zb bei \" in im Command String oder einfach nur den Text als IOException.. :(




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026