我正在尝试使用org-babel捕获diff
的输出,但是由于某些原因,它无法正常工作。对于文件
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:
迷你缓冲区读取“代码块未产生输出”。 org-babel错误输出窗口为空。其他命令,例如ls
,将按预期显示输出。我不熟悉org-babel。
我尝试使用:results output verbatim
,没有更改。我也尝试使用:results output replace
作为建议的here。没有帮助。
我可以在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
当返回码不是org-babel
时,看起来0
不喜欢它。这就是为什么各种解决方案都能起作用的原因。使用添加另一个命令意味着该块的总体错误代码成功。类似地,管道传递到cat
会使管道返回cat
的错误代码。解决错误情况的另一种方法是:
diff 1 2 || true