Próbuję przesłać dane wyjściowe z jednego bloku źródłowego do następnego bloku źródłowego jako standardowe wejście. Oto przykład tego, co mam do tej pory:
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
Moje problemy z tym są następujące:
Muszę ręcznie utworzyć wynik pierwszego bloku, naciskając
C-c C-c
wynik musi być zawarty w buforze org (w przeciwnym razie duże wyjście nie jest potrzebne)
wynik należy nazwać ręcznie
Czy istnieje obejście lub lepszy sposób na zrobienie tego?
Miałem podobny przypadek użycia i uruchomiłem prosty eksporter, który pozwala mi używać trybu json dla źródła / wejścia ze standardowego wejścia:
Następnie dodaj
(passthrough . t)
do org-babel-list-langauges i oto jest w akcji:źródło
Wywołaj blok src z innego, używając referencji „noweb” (patrz
(info "(org) Noweb reference syntax")
):źródło
cat
w powłoce było tylko prostym przykładem.Innym sposobem rozwiązania tego problemu jest nazwanie wejścia jako PRZYKŁAD lub blok QUOTE, jeśli dane wejściowe są naprawdę statyczne. Coś takiego:
lub PRZYKŁAD, jeśli wolisz:
następnie odwołaj się do nazwanych bloków w kodzie, który chcesz ocenić; tutaj używamy przykładu QUOTE:
Ponieważ wartość
some-json
bloku jest statyczna, nie ma potrzeby jej oceny.the-code
Blok oceniający daje:źródło