【问题标题】:gogoshell own commands pipinggogoshell自己的命令管道
【发布时间】:2014-11-04 04:59:34
【问题描述】:

我正在尝试使用 gogo-shell 添加一些控制台命令 例如,我正在创建命令 add 和 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

我认为这是因为管道(添加)并行运行。那么我该如何编写管道顺序的命令。

【问题讨论】:

    标签: osgi gogo-shell


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 2023-03-23
      • 2016-04-01
      • 1970-01-01
      • 2011-06-03
      • 2023-03-31
      • 2020-07-18
      • 2012-12-02
      相关资源
      最近更新 更多