使用通配符运行多个shell命令

使用通配符运行多个shell命令,shell,scala,Shell,Scala,在Scala(或Java)中有没有一种简单的方法可以完成以下操作。我想从Scala进程运行命令行命令,例如: cd test && javac *.java 作为动态生成的shell脚本。javac*.java应该 发生在目录test中。通常的简单 import scala.sys.process._ ... "cd test && javac *.java".! 或 不要工作,因为Scala误解了&&和通配符*。我没有 我不知道为什么 对于所需内容,

在Scala(或Java)中有没有一种简单的方法可以完成以下操作。我想从Scala进程运行命令行命令,例如:

 cd test && javac *.java
作为动态生成的shell脚本。
javac*.java
应该 发生在目录
test
中。通常的简单

 import scala.sys.process._
 ...
 "cd test && javac *.java".!

不要工作,因为Scala误解了
&&
和通配符
*
。我没有
我不知道为什么

对于所需内容,应将字符串作为命令行参数输入到
bash
。(也就是说,
Process(Seq(“bash”)、“-c”、“cd-test&&javac*.java”)。!
)原因是没有虚拟shell,您在其中输入的命令将改变状态,如
cd
。您必须显式地创建一个

过程
工具将允许您将调用链接在一起,但调用的副作用最好反映在文件系统或类似系统中,而不是在shell环境中。介绍性文本末尾的
ProcessBuilder
scaladoc。

这应该可以正常工作

import scala.sys.process._    

"cd test".#&&("javac *.java").!
相当于

"cd test" #&& "javac *.java" !

谢谢,这很有道理。与此同时,我发现了相关的问题,这些问题也提出了类似的观点。我认为Scala文档在这方面可能会更好。
"cd test" #&& "javac *.java" !