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

Reply via email to