Ich brauche einen Shell-Befehl von einem Scala-Skript auszuführen, und ich benutze das folgende Snippet für die:Terminal-Befehl cd nicht von Scala-Skript arbeitet
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)
Der Code funktioniert gut. Ich frage mich, warum ich
java.io.IOException: Cannot run program "cd": error=2, No such file or directory
erhalten, sobald ich den Befehl cd /tmp && ls
ändern, die zu ls /tmp
IMO entspricht?
mit 'type cd' und' type ls' in der Shell sind auch in Ihrer Shell demonstrativ. Es sollte berichten, dass cd keine ausführbare Datei ist, sondern eine eingebaute Shell. – stew
Grundsätzlich wollte ich eine Ausgabe eines bestimmten Befehls lesen, der aus einem Verzeichnis ausgeführt werden sollte, das Laufzeit bekannt ist, wie: 'cd/somedir && find. -Mindepth 5 -Typ d'. Es gibt eine Reihe von Möglichkeiten, um es ohne "cd" zu erreichen, aber mit Perl Hintergrund war ich nur kurios, warum das mit JVM unmöglich war. Danke für die Antwort! – nab