首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用回声连接的情况下编写此永久命令?

如何在不使用回声连接的情况下编写此永久命令?
EN

Stack Overflow用户
提问于 2012-12-10 15:36:40
回答 1查看 232关注 0票数 1

我正在使用本教程中给出的命令http://www.statmt.org/moses/?n=Moses.Baseline

代码语言:javascript
复制
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)中运行这个命令,但是连接有问题。甚至

代码语言:javascript
复制
      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.

请建议运行正确的命令而不使用回显。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 15:57:39

由于您的参数包含空格,因此不能依赖内置的标记化。要避免这种情况,请使用exec(String[])而不是exec(String)。例如,对于此命令:

代码语言:javascript
复制
/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'

您将执行以下操作:

代码语言:javascript
复制
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这样的命令行,您应该执行一个外壳程序并将其作为参数传递给该外壳程序;例如:

代码语言:javascript
复制
String args[] = new String[] { "/bin/sh", "-c", "echo '/home/saj/' | ls" };
Process p = r.exec(args);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13796760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档