gogoshell自己的命令管道

时间:2014-09-10 13:50:47

标签: osgi gogo-shell

我试图使用gogo-shell添加一些控制台命令 例如,我创建命令add and show

public void add(CommandSession commandSession, int i) {
    List<Integer> il = commandSession.get("list");
    if (il == null) {
        il = new ArrayList<Integer>();
        il.add(i);
        commandSession.put("list",il)
    } else {
        il.add(i)
    }
}
public void show(CommandSession commandSession) {
    List<Integer> il = commandSession.get("list");
    il.foreach(System.out::println);
}

当我使用它们时

add 1 | add 2 | add 3 | add 4 | show

我正在做类似

的事情
null pointer Exception

1
3
4
2

我认为这是因为管道(添加)并行运行。那么如何在顺序输入管道的情况下编写命令。

1 个答案:

答案 0 :(得分:0)

gogo中的管道(如bash)期望使用标准输入的数据并在标准输出上生成数据。管道中的每个元素作为一个单独的线程同时运行。

&#39;添加&#39;您的示例中的命令不会在标准输入/输出中使用或生成数据,因此不适合在管道中运行。

如果您只想让命令按顺序运行,请使用&#39 ;;&#39;命令分隔符:

克!加1;加2;加3;加4;显示