Hello, "jhe...@t-online.de" <jhe...@t-online.de> writes:
> Hi list, > > have spent hours with trying to de-mystify this issue, but no chance to get > it. > Any hints or doc references are welcome. > > > Given a src block with a simple if clause depending on parameter p1: > > #+NAME: decider > #+BEGIN_SRC emacs-lisp :var p1="tbd" :results output > > (cond ((equal p1 "valA")(print "VALUE A")) > ((equal p1 "valB")(print "B VALUE")) > (t (print (concat "ERROR: p1=>|" p1 "|< not handled" ))) ) > #+END_SRC > > > Why does the following noweb call result in the t condition (and not in valB > as expected) > although the p1 value seems to be received by the decider block: > > #+BEGIN_SRC shell :var x="valB" :noweb yes :results output raw > echo -n <<decider(p1="$x")>> > #+END_SRC > > == ERROR: p1=>|valB|< not handled > > > while hard coded param value will work (valA chosen to differentiate from x): > > #+BEGIN_SRC shell :var x="valB" :noweb yes :results output raw > echo -n <<decider(p1="valA")>> > #+END_SRC > > #+RESULTS: > VALUE A > > Hard coded "valB" will work as well. Noweb expansion is done before references in the current source block are resolved. You are sending p1="$x" instead of p1="valB". Regards, -- Nicolas Goaziou