Sono un principiante alla Scala e sto scrivendo un wrapper per invocare comandi shell. Attualmente sto cercando di invocare comandi di shell con pipe da una directory specificata.Scala - comandi shell con pipe
Per raggiungere questo ho scritto semplice utility:
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());
}
Tuttavia, con questo programma di utilità che non posso usare tubi, ad esempio:
runCommand("ps -eF | grep -i foo", new File("."));
prima cosa ho pensato, che i tubi sono la funzionalità della shell, così ho provato "/ bin/sh -c ps -eF | grep -i pippo", ma sembra che l'espressione dalla destra della pipe sia stata ignorata.
Ho anche provato a eseguire i comandi con! sintassi (pacchetto sys.process._), ma non sono riuscito a capire come chiamare il comando dalla directory specificata (senza usare "cd").
Potrebbe per favore avvisarmi, come farlo correttamente?
@xhochy OK. Ho rimosso il commento in modo che nessuno possa accidentalmente usarlo. :) –