Verwendung von scala sys.process mit einfachen Anführungszeichen, Leerzeichen, Pipes etc

8

Ich versuche scala.sys.process._ zu verwenden, um eine POST-Anfrage an meinen Chronos -Server mit Curl zu senden. Da in den Argumenten des Befehls Leerzeichen enthalten sind, verwende ich die Seq[String] Variante von cmd.!!

Ich baue den Befehl so:

%Vor%

was wie erwartet

erzeugt %Vor%

jedoch scheint dies das Argument 'Content-Type: application/json' zu mindern:

%Vor%

was ich nicht verstehe. Im Gegensatz dazu funktioniert der Aufruf von cmd.mkString(" ") und Kopieren + Einfügen in das Terminal wie erwartet.

%Vor%

Ich habe zahlreiche Varianten des Arguments -H vergeblich ausprobiert, keine Einsicht in die Benutzung von einfachen Anführungszeichen in sys.process ._s !! würde sehr geschätzt werden.

Ich habe auch Variationen versucht, die eine Reihe von Fehlern erzeugen, einschließlich

%Vor%

(zusätzlich zum Abschlachten des jsonHash, dh:

%Vor%     
Austin 21.01.2014, 01:48
quelle

3 Antworten

14

Sie müssen jedes Argument in ein separates Element einer Sequenz aufteilen.

Statt dessen:

%Vor%

Sie müssen dies schreiben:

%Vor%

Es setzt jedes Element einer Sequenz als Argument in eine Befehlszeile. So sieht "-H 'Content-Type... wie ein einzelnes Argument für curl aus, während es 2 sein sollte.

Hier ist ein einfacher Test:

%Vor%     
yǝsʞǝlA 21.01.2014, 03:11
quelle
6

Die meisten anderen Antworten sind ein bisschen fade, benutze den folgenden Trick, um Bash dazu zu bringen, die gesamte Kostenstellenbehandlung usw. für dich zu erledigen.

%Vor%

Zum einfacheren googlen: bash execute process sys.process pipe string scala

Als String pimp-Methode (einfaches Kopieren einfügen)

%Vor%     
samthebest 15.11.2016 11:45
quelle
2

Ich hatte es auch schwer, diese Arbeit zu machen. Erleuchte von Aleksey, unten arbeitete für mich. Beachten Sie, dass für den Inhaltstyp überraschenderweise kein zusätzliches Zitat (oder doppelte Anführungszeichen) vorhanden ist:

%Vor%     
jiangok 06.07.2015 05:09
quelle

Tags und Links