Scala: выполнение внешнего процесса, экранирование строк и ошибки
Я хочу выполнить следующую команду:
lynx -useragent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1' -source 'http://localhost'
как Process
в Скале. Я использовал оба:
val cmd = ... // command to execute
cmd #> new java.io.File( filename ) !
а также:
val proc = Process( cmd )
proc !!
И в обоих случаях я получаю ошибки от lynx
:
Can't Access `file://localhost/home/me/Work/23.lynx/2.multidownload/(X11;'
Alert!: Unable to access document.
Команда запуска в одиночку работает хорошо, когда я запускаю ее в Scala - я получаю ошибки. Что означает, что между Scala и lynx
и строки неправильно интерпретируются... Есть идеи?
1 ответ
Решение
Я предполагаю, что вы установили cmd
в строку. !!
затем разделяет строку на каждый символ пробела, чтобы получить аргументы для передачи lynx, не заботясь о вашем '
персонажи.
import scala.sys.process._
val cmd = Seq("lynx",
"-useragent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1'",
"-source" "http://localhost")
val out = cmd.!!