не удается выполнить рабочую команду оболочки с помощью scala.sys.process

#scala #shell

#scala #оболочка

Вопрос:

Следующая команда успешно выполняется при запуске в оболочке

 csvsql --db "postgresql://user:password@localhost:5432/samples" --table sample_table --insert /absolute.path.csv
 

но не выполняется при запуске из scala следующим образом:

 s"""csvsql --db "postgresql://user:password@localhost:5432/samples" --table sample_table --insert /absolute.path.csv""" !!
 

со следующей ошибкой:

Ошибка аргумента: не удалось проанализировать URL-адрес rfc1738 из строки ‘»postgresql://user:password@localhost:5432/samples «‘

Комментарии:

1. Попробуйте заменить двойные кавычки внутри строки на одинарные кавычки.

Ответ №1:

Оболочка удалит кавычки перед передачей аргумента процессу, поэтому вам необходимо удалить кавычки из строки базы данных. Вероятно, лучше использовать a Seq аргументов, а не строку:

 Seq("csvsql", "--db", "postgresql://user:password@localhost:5432/samples", "--table", "sample_table", "--insert", "/absolute.path.csv") !!