我試圖運行一組使用Scala進程生成器的shell命令。在Scala中,我運行的進程生成這樣的:使用shell運算符與Scala進程生成器?
val command : String = ... // loaded from file somewhere
val processBuilder = Process(command)
val exitCode : Integer = processBuilder.!
的命令(RAN逐個):
/usr/bin/R --slave --silent --file=test.R argval1 >> out
/usr/bin/R --slave --silent --file=test.R argval2 >> out
/usr/bin/R --slave --silent --file=test.R argval3 >> out
以上這三個shell命令毫無例外會工作,但out
文件是永遠創建。那麼下面的最後命令失敗:
awk 'n < $0 {n=$0}END{print n}' out > final
基本上就拿起文件out
的最小元素,並把它放在文件final
。
awk: syntax error at source line 1
context is
>>> ' <<<
awk: bailing out at source line 1
答案的第一部分解決了大部分問題。剩下的唯一缺點是追加「>>」被解釋爲「>」重定向,因此三個第一個命令覆蓋前一個而不是追加。有任何想法嗎?那麼我會接受。 :) –
@GiovanniAzua這不是一個Scala問題。整個事情正在傳遞給shell,我想不出有什麼理由讓shell做到這一點。我懷疑你沒有執行你認爲正在執行的命令行。 –