我正在使用本教程中给出的命令http://www.statmt.org/moses/?n=Moses.Baseline
echo 'T W O N E I G H T' | /home/saj/g2p/mosesdecoder-master/bin/moses -f /home/saj/g2p/working/binarised-model/moses.ini它工作正常,但我需要在没有echo命令的情况下运行它。因为我想在JAVA (Eclipse)中运行这个命令,但是连接有问题。甚至
Process p = r.exec("echo '/home/saj/' | ls");也没有运行。尽管像ls、pwd这样的简单命令可以正常工作。
我试过这些方法,但都不起作用。
/home/saj/g2p/mosesdecoder /home/saj/g2p/working/binarised-model/moses.ini /bin/摩西-f master 'T W O N E I G H T‘
/home/saj/g2p/ /home/saj/g2p/working/binarised-model/moses.ini解码器- -f /bin/摩西解码器T W O N E I G H T
/home/saj/g2p/mosesdecoder /home/saj/g2p/working/binarised-model/moses.ini /bin/摩西'T W O N E I G H T‘-f master
/home/saj/g2p/mosesdecoder /home/saj/g2p/working/binarised-model/moses.ini /bin/摩西T W O N E I G H T -f MAST.
请建议运行正确的命令而不使用回显。
发布于 2012-12-10 15:57:39
由于您的参数包含空格,因此不能依赖内置的标记化。要避免这种情况,请使用exec(String[])而不是exec(String)。例如,对于此命令:
/home/saj/g2p/mosesdecoder-master/bin/moses -f \
/home/saj/g2p/working/binarised-model/moses.ini 'T W O N E I G H T'您将执行以下操作:
String args[] = new String[] {
"/home/saj/g2p/mosesdecoder-master/bin/moses",
"-f",
"/home/saj/g2p/working/binarised-model/moses.ini",
"T W O N E I G H T" };
Process p = r.exec(args);另外,关于管道和重定向,请注意这些都是由shell处理的。为了运行诸如echo '/home/saj/' | ls这样的命令行,您应该执行一个外壳程序并将其作为参数传递给该外壳程序;例如:
String args[] = new String[] { "/bin/sh", "-c", "echo '/home/saj/' | ls" };
Process p = r.exec(args);https://stackoverflow.com/questions/13796760
复制相似问题