10

我正在尝试diff使用 org-babel 捕获输出,但由于某种原因它不起作用。对于文件

1

a b c

2

a c b

diff 1 2从命令行调用返回

1c1
< a b c
---
> a c b

但是对于 org-babel,什么都没有:

#+begin_src sh                                                                                                                                                 
diff 1 2                                                                                                                                                       
#+end_src                                                                                                                                                      

#+RESULTS:

minibuffer 读取“代码块没有输出”。org-babel 错误输出窗口为空。其他命令,例如ls按预期显示输出。我不熟悉 org-babel。

我尝试使用:results output verbatim,没有任何变化。我也尝试按照这里:results output replace的建议使用。没有帮助。

  • Emacs 版本是 24.4.1(在 Debian jessie 上)
  • 组织模式版本是 8.2.10
4

2 回答 2

13

我可以重现您的问题(在 OSX 上)。

奇怪的是,执行 babel 块会打开Org-babel 错误输出缓冲区,好像有什么东西要去 STDERR。

如果在 diff 之后添加任何其他输出,结果将显示 OK。例如,

#+begin_src sh :results output
diff 1 2
echo
#+end_src

如果你强制 diff 的结果到标准输出,结果也会显示:

#+begin_src sh :results output
diff 1 2 | cat
#+end_src
于 2014-12-05T11:49:30.653 回答
3

当返回码不是时,看起来org-babel不喜欢它0。这就是各种解决方案起作用的原因。添加另一个命令使用意味着该块的整体错误代码是成功的。类似地,管道进入cat使管道返回错误代码cat。吃错误条件的另一种方法是:

  diff 1 2 || true
于 2020-01-28T02:07:15.407 回答