On 03/11/2022 01:17, Greg Minshall wrote:
hi. i have a text in a named #+begin_example ... #+end_example block.
i would like to process this text line by line in a shell (bash, say)
code block. but, it appears that the individual lines are not
separated, but passed as one long string to the source block. (example
below.)
#+name: lbl
#+begin_example
line 1
line 2
#+end_example
You may use :stdin instead of :var, see
https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-shell.html
#+begin_src bash :stdin lbl
while read -r -a arr ; do
printf 'value\t%s\n' "${arr[1]}"
done
#+end_src
#+RESULTS:
| value | 1 |
| value | 2 |
#+begin_src bash :var input=lbl :var in2='("first" "second")
echo ${#input[@]}
echo ${#in2[@]}
echo ${input}
#+end_src
There is a nice tool: shellcheck. It should not be difficult to define a
function that feeds current source block to it. The only point is to
specify shell type since shebang is missed. In some cases even bash -n
before running a script may save some time during debugging.