gogoshell自己的命令管道



我正在尝试使用gogoshell添加一些控制台命令例如,我创建命令添加并显示

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

我认为发生这种情况是因为管道(添加)并行运行。那个么,我该如何编写管道将按顺序排列的命令呢。

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

示例中的"add"命令不消耗或生成标准输入/输出的数据,因此不适合在管道中运行。

如果只希望命令按顺序运行,请使用";"命令分隔符:

g!加1;增加2;添加3;增加4;显示

相关内容

  • 没有找到相关文章

最新更新