Soy un principiante de Scala y estoy escribiendo un contenedor para invocar comandos de shell. Actualmente estoy intentando invocar comandos de shell con pipes desde un directorio especificado.Scala - comandos de shell con tubería
Para lograr esto escribí sencilla utilidad:
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());
}
Sin embargo, con esta utilidad no puedo usar tuberías, por ejemplo:
runCommand("ps -eF | grep -i foo", new File("."));
Primero pensé, que las tuberías son la funcionalidad de la cáscara, así que probé "/ bin/sh -c ps -eF | grep -i foo", pero parece que la expresión de la derecha de la tubería fue ignorada.
¡También intenté ejecutar comandos con! sintaxis (sys.process._ package), pero no pude entender cómo llamar al comando desde el directorio especificado (sin usar "cd").
¿Podría aconsejarme cómo hacerlo correctamente?
@xhochy OK. Eliminé el comentario para que nadie pueda usarlo accidentalmente. :) –