Ich versuche, die Ausgabe eines Quellblocks als Standardeingabe an den nächsten Quellblock weiterzuleiten. Hier ein Beispiel für das, was ich bisher habe:
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
Meine Probleme damit sind:
Ich muss das Ergebnis des ersten Blocks manuell durch Drücken erstellen
C-c C-c
Das Ergebnis muss im Organisationspuffer enthalten sein (große Ausgabe wird sonst nicht benötigt).
Das Ergebnis muss manuell benannt werden
Gibt es eine Problemumgehung oder einen besseren Weg, dies zu tun?
Ich hatte einen ähnlichen Anwendungsfall und rollte einen einfachen Exporter, mit dem ich den json-Modus für die Quelle / Eingabe von stdin verwenden konnte:
Fügen Sie dann
(passthrough . t)
zu org-babel-list-langauges hinzu, und hier ist es in Aktion:quelle
Rufen Sie einen src-Block von einem anderen mit "noweb" -Referenzen auf (siehe
(info "(org) Noweb reference syntax")
):quelle
cat
in der Shell war nur ein einfaches Beispiel.Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, die Eingabe als BEISPIEL- oder QUOTE-Block zu benennen, wenn die Eingabe wirklich statisch ist. Etwas wie das:
oder ein BEISPIEL, wenn Sie bevorzugen:
Verweisen Sie dann auf die benannten Blöcke in dem Code, den Sie auswerten möchten. hier verwenden wir das QUOTE-Beispiel:
Da der Wert des
some-json
Blocks statisch ist, muss er nicht ausgewertet werden. Auswertungsblockthe-code
ergibt:quelle