URL: https://www.overclockers.at/coding-stuff/java_problem_bei_stringuebergabe_in_die_shell_192677/page_1 - zur Vollversion wechseln!
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*
Also wie man da sieht haben die Variablen vorne und hinten Hochkommas, sollen eben Strings sein (Nachricht zum Beispiel)Code:scmxx --device /dev/ttyUSB0 --send --sms --direct --number=\"$tel_nummer\" --text=\"$tel_text\" 2>&1");
Code:Process p = Runtime.getRuntime().exec(*COMMAND*);
Auch schon versucht im String nachricht selbst \" einzufügen, aber die werden sofort als " interpretiert und via SMS mitgeschickt, dennoch der String abgeschnitten.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"


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...Zitat von Nicound das einsetzen des unicode zeichens für das leerzeichen hilft auch nix?

Schon mal mit dem exec() probiert, das ein String[] erwartet?
Ja, Programm getrennt von Argumenten. Programm getrennt von einzeln getrennten Argumenten auch.
edit:
http://www.javaworld.com/javaworld/...1229-traps.htmlZitatPass 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.

Push, meine derzeitige Pfuschlösung is net das Wahre 
Probiers mal so:
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 lassenCode:ProcessBuilder pb = new ProcessBuilder("scmxx", /* ... argumente als strings */, "--text=" + nachricht); pb.start();

Danke, schau ich mir gegen Abend an. Meld mich dann
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
)
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