首页 > 解决方案 > 在 org 模式下从另一个会话中获取变量的值

问题描述

如何在不同会话之间共享 org-mode 中的变量值?

简单示例:在我创建的第一个会话中_gpg_tmpdir

#+name: make_temporary_directories
#+begin_src bash :session *one*
_gpg_tmpdir="$( mktemp -d )"
#+end_src

并且需要在第二次会议中清理它:

#+name: clean_temporary_directories
#+begin_src bash :session *two*
rm -rf $_gpg_tmpdir
#+end_src

该示例仅用于演示目的。问题是在 org 模式下,在不同的代码会话(可能使用不同的代码语言)之间共享变量的更轻松的方法是什么。

标签: org-modeorg-babel

解决方案


您可以使用代码块的名称通过“var”属性从不同的代码块引用其输出。有关更多信息,您可以查看 orgmode文档

第一个块需要输出值:

#+name: make_temporary_directories
#+BEGIN_SRC bash :session *one* :results output
variable=`ls`
echo $variable
#+END_SRC

#+RESULTS: make_temporary_directories
: 
: file1 file2 file3 file4 file5 file6 file7 file8

第二个块可以使用前一个代码块的名称引用该值:

#+BEGIN_SRC bash :session *two* :results output :var ls_result=make_temporary_directories
echo $ls_result
#+END_SRC

#+RESULTS:
#+begin_example

bash-5.0$ file1 file2 file3 file4 file5 file6 file7 file8
#+end_example

推荐阅读