[Java] Problem bei Stringübergabe in die Shell
Burschi1620 10.03.2008 - 19:28 1133 8
Burschi1620
24/7 Santa Claus
|
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: scmxxCommand zum Senden einer SMS: 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: 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: Process p = Runtime.getRuntime().exec(*COMMAND*);
Versuche: "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 ![:(](/images/smilies/frown.gif) edit: ha die neue Codeansicht ist feiner
|
Nico
former person of interest
|
und das einsetzen des unicode zeichens für das leerzeichen hilft auch nix?
|
Burschi1620
24/7 Santa Claus
|
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
Hoffnungsloser Optimist
|
Schon mal mit dem exec() probiert, das ein String[] erwartet?
|
Burschi1620
24/7 Santa Claus
|
Ja, Programm getrennt von Argumenten. Programm getrennt von einzeln getrennten Argumenten auch. edit: 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.htmlGeht aber dennoch nicht wenn Programm und Argumente getrennt sind
|
Burschi1620
24/7 Santa Claus
|
Push, meine derzeitige Pfuschlösung is net das Wahre
|
gue
Addicted
|
Probiers mal so: ProcessBuilder pb = new ProcessBuilder("scmxx", /* ... argumente als strings */,
"--text=\\\"" + nachricht + "\\\"");
pb.start();
So geht es unter Windows. Vielleicht versteht es scmxx auch so: 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
24/7 Santa Claus
|
Danke, schau ich mir gegen Abend an. Meld mich dann
|
Burschi1620
24/7 Santa Claus
|
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](/images/smilies/biggrin.gif) ) 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..
|