Использование scala sys.process с одинарными кавычками, пробелами, каналами и т. Д.

Я пытаюсь использовать scala.sys.process._, чтобы отправить запрос POST на мойChronos сервер с curl. Потому что в команде есть пробеларгументы, я используюSeq[String] вариантcmd.!!

Я строю команду так:

val cmd = Seq("curl", "-L", "-X POST", "-H 'Content-Type: application/json'", "-d " + jsonHash,  args.chronosHost + "/scheduler/" + jobType)

который производит, как и ожидалось,

cmd: Seq[String] = List(curl, -L, -X POST, -H 'Content-Type: application/json', -d '{"schedule":"R/2014-02-02T00:00:00Z/PT24H", "name":"Scala-Post-Test", "command":"which scalac", "epsilon":"PT15M", "owner":"[email protected]", "async":false}', localhost:4040/scheduler/iso8601)

Тем не менее, запуск этого, кажется, портит'Content-Type: application/json' аргумент:

scala> cmd.!!
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   264    0   100  100   164   2157   3538 --:--:-- --:--:-- --:--:-- 54666
res21: String =
"The HTTP header field "Accept" with value "*/* 'Content-Type:application/json'" could not be parsed.
"

который я неТ понять. В отличие от вызоваcmd.mkString(" ") и копирование + вставка в терминал работает как положено.

curl -L -X POST -H 'Content-Type:application/json' -d '{"schedule":"R/2014-02-02T00:00:00Z/PT24H", "name":"Scala-Post-Test", "command":"which scalac", "epsilon":"PT15M", "owner":"[email protected]", "async":false}' mapr-01.dev.quantifind.com:4040/scheduler/iso8601

Я пробовал многочисленные варианты аргумента -H безрезультатно, я не понял, как использовать одинарные кавычки в sys.process._ 'с !! будет принята с благодарностью.

Я также попробовал варианты на этом, который генерирует множество ошибок, в том числе

HTTP ERROR: 415
<p>Problem accessing /scheduler/iso8601. Reason:
</p><pre>    Unsupported Media Type</pre><p></p>
Powered by Jetty://

(в дополнение к разделке jsonHash, т.е.

[1/6]: '"schedule":"R/2014-02-02T00:00:00Z/PT24H"' --> 

curl: (6) Couldn't resolve host ''"schedule"'

Which makes me think it is not interpreting the -H argument correctly

Ответы на вопрос(3)

Ваш ответ на вопрос