在程序中-不是 REPL
-是否可以引入字符串变量来表示要执行的shell命令?
import sys.process._
val npath = opath.substring(0,opath.lastIndexOf("/"))
s"rm -rf $npath/*" !
s"mv $tmpName/* $npath/" !
编译器说:
:103: error: type mismatch;
found : String
required: scala.sys.process.ProcessLogger
s"mv $tmpName/* $npath/" !
^
请注意,在REPL
中,可以使用
:power
但是..我们不在这里的REPL
中。
答案 0 :(得分:0)
我发现了一个有用的解决方法,主要保留了预期的结构:
使用
Seq[String].!
语法。但是通过使用空格作为定界符,我们仍然可以用wysiwig
方式写出来
import sys.process._
val npath = opath.substring(0,opath.lastIndexOf("/"))
s"rm -rf $npath/*".split(" ").toSeq.!
s"mv $tmpName/* $npath/".split(" ").toSeq.!
这里的限制是命令中的嵌入空格将无法工作-它们需要命令的每个部分的显式 Seq
。
如果要运行一组命令,这会更好一些:
Seq(s"rm -rf $npath/*",s"mv $tmpName/* $npath/").foreach{ cmd=>
println(cmd)
cmd.split(" ").toSeq.!
}