Я пытаюсь передать вывод одного исходного блока следующему исходному блоку как стандартный ввод. Вот пример того, что у меня так далеко:
Create stdin data:
#+header: :exports code
#+header: :results output
#+begin_src sh
echo "That goes to the next"
#+end_src
#+name: piped
#+RESULTS:
: That goes to the next
Use "piped" as stdin:
#+header: :exports results
#+header: :stdin piped
#+header: :results output
#+begin_src sh
VALUE=$(cat)
echo "I got:"
echo "$VALUE"
#+end_src
Мои проблемы с этим:
Я должен вручную создать результат первого блока, нажав
C-c C-c
результат должен быть включен в org-буфер (в противном случае большой вывод не требуется)
результат должен быть назван вручную
Есть ли обходной путь или лучший способ сделать это?
У меня был похожий вариант использования, и я выбрал простой экспортер, который позволил мне использовать json-mode для ввода / вывода из stdin:
Затем добавьте
(passthrough . t)
в org-babel-list-langauges, и вот оно в действии:источник
Вызовите блок src из другого источника, используя ссылки "noweb" (см.
(info "(org) Noweb reference syntax")
):источник
cat
в оболочке было только простым примером.Другим способом решения этой проблемы является присвоение имени входу блока EXAMPLE или QUOTE, если вход действительно статический. Что-то вроде этого:
или ПРИМЕР, если вы предпочитаете:
затем ссылаться на эти именованные блоки в коде, который вы хотите оценить; здесь мы используем пример QUOTE:
Поскольку значение
some-json
блока является статическим, нет необходимости оценивать его. Оценочныйthe-code
блок дает:источник