我正在尝试使用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。没有帮助。
答案 0 :(得分:8)
我可以重现你的问题(在OSX上)。
奇怪的是执行babel块会打开 Org-babel错误输出缓冲区,好像有什么东西要去STDERR。
如果在diff之后添加任何其他输出,结果将显示OK。例如,
#+begin_src sh :results output
diff 1 2
echo
#+end_src
如果你强制差异的结果为stdout,结果也会显示:
#+begin_src sh :results output
diff 1 2 | cat
#+end_src
答案 1 :(得分:2)
当返回码不是org-babel
时,看起来像0
不喜欢它。这就是各种解决方案起作用的原因。使用添加另一个命令意味着该块的总体错误代码成功。类似地,将管道传递到cat
中会使管道返回错误代码cat
。解决错误情况的另一种方法是:
diff 1 2 || true