組織モード:パイプソースブロックから次のソースブロックへの標準出力

私は、1つのソースブロックの出力を次のソースブロックに標準入力としてパイプ接続しようとします。 ここに私がこれまで持っているものの例があります:

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

    を押すことで最初のブロックの結果を手動で作成する必要があります。
  • 結果はorg-bufferに含まれている必要があります(大きな出力は別途必要ありません)

  • 結果は手動で指定する必要があります

これを行うための回避策またはより良い方法がありますか?

9

2 答え

結果の代わりにsrcブロックを指定してコードを修正する簡単な方法は次のとおりです。

#+name: piped
#+header: :exports code
#+header: :results output
#+begin_src sh
echo "That goes to the next"
#+end_src

#+RESULTS:
: That goes to the next 

#+header: :exports results
#+header: :stdin piped
#+header: :results output
#+begin_src sh
VALUE=$(cat)
echo "I got:"
echo "$VALUE"
#+end_src

#+results:
: I got:
: That goes to the next
6
追加された
非常に良い、ありがとう、本当に助けた。
追加された 著者 casualcoder,

"noweb"リファレンス((info "(org)Noweb参照構文"を参照)を使用して別のsrcブロックを呼び出します。):

#+name: input
#+header: :exports code
#+header: :results output
#+begin_src sh
echo "That goes to the next"
#+end_src

#+header: :exports results
#+header: :results output :noweb no-export
#+begin_src sh
VALUE=$(<<input>>)
echo "I got:"
echo "$VALUE"
#+end_src

#+results:
: I got:
: That goes to the next
1
追加された
それはクールで、知っておいてよかった、ありがとう。残念なことに、2番目のソースコードブロックは実際にstdinを使用する必要があります。シェルでの cat の使用は単純な例に過ぎませんでした。
追加された 著者 casualcoder,