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

Mar*_*ger 6 shell scala

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

 cd test && javac *.java
Run Code Online (Sandbox Code Playgroud)

作为动态生成的shell脚本.本javac *.java应在目录中出现test.通常很简单

 import scala.sys.process._
 ...
 "cd test && javac *.java".!
Run Code Online (Sandbox Code Playgroud)

要么

 "cd test && javac *.java".!!
Run Code Online (Sandbox Code Playgroud)

不起作用,因为Scala误解了&&和通配符*.我不知道为什么.

Rex*_*err 13

根据需要,您应该输入字符串作为命令行参数bash.(也就是说,Process(Seq("bash","-c","cd test && javac *.java")).!)原因是没有虚拟shell,你输入的命令会改变状态cd.你必须明确地创建一个.

这些process工具允许您将调用链接在一起,但调用的副作用最好反映在文件系统或某些情况下,而不是在shell环境中.该ProcessBuilderscaladoc 包含例如在介绍性文字的结尾.