我试图运行一组使用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做到这一点。我怀疑你没有执行你认为正在执行的命令行。 –