Ich bin ein Scala Anfänger und ich schreibe einen Wrapper zum Aufrufen von Shell-Befehlen. Momentan versuche ich Shell-Befehle mit Pipes aus einem angegebenen Verzeichnis aufzurufen.Scala - Shell Befehle mit Pipe
Um dies zu erreichen, schrieb ich einfaches Programm:
def runCommand(command: String, directory: File): (Int, String, String) = {
val errbuffer = new StringBuffer();
val outbuffer = new StringBuffer();
//run the command
val ret = sys.process.Process(command, directory) !
//log output and err
ProcessLogger(outbuffer append _ + "\n", outbuffer append _ + "\n");
return (ret, outbuffer.toString(), errbuffer.toString());
}
jedoch mit diesem Programm ich Rohre beispielsweise nicht verwenden kann:
runCommand("ps -eF | grep -i foo", new File("."));
Zuerst dachte ich, dass Rohre Funktionalität Shell sind, Also habe ich "/ bin/sh -c ps -eF | grep -i foo" versucht, aber es scheint, dass der Ausdruck von der rechten Seite der Pipe ignoriert wurde.
Ich habe auch versucht, Befehle mit! Syntax (sys.process._ Paket), aber ich konnte nicht herausfinden, wie man den Befehl aus dem angegebenen Verzeichnis (ohne "CD") aufrufen.
Können Sie mir bitte raten, wie man das richtig macht?
@xhochy OK. Ich habe den Kommentar entfernt, damit niemand ihn versehentlich verwenden kann. :) –