ho bisogno di eseguire un comando di shell da uno script Scala e io uso il seguente frammento per questo:Terminal comando cd non funziona da Scala sceneggiatura
import scala.sys.process.{Process, ProcessIO}
val command = "ls /tmp"
val process = Process(command)
val processIO = new ProcessIO(_ =>(),
stdout => scala.io.Source.fromInputStream(stdout).getLines.foreach(println),
_ =>())
process.run(processIO)
Il codice funziona bene. Mi chiedo il motivo per cui ho
java.io.IOException: Cannot run program "cd": error=2, No such file or directory
non appena cambio il comando per cd /tmp && ls
che è IMO equivalente a ls /tmp
?
utilizzando 'type cd' e' type ls' nella shell sono anche dimostrativi nella shell. Dovrebbe riportare che cd non è un eseguibile, ma una shell integrata – stew
In generale, volevo leggere un output di un certo comando che dovrebbe essere eseguito da una directory che è runtime conosciuta, come: 'cd/somedir && find. -dindice 5 -tipo d'. Ci sono diversi modi per ottenerlo senza 'cd', ma avendo lo sfondo Perl ero solo curioso del perché fosse impossibile farlo con JVM. Grazie per la risposta! – nab