---- On Tue, 02 May 2023 00:17:51 -0400 Christopher M. Miles wrote --- > Indeed, this option solved the problem real neat. > I'm surprised by your knowledge and digging problem skill. > I have to say a big TANKS to you. THANKS, THANKS, THANKS. Hahaha
My thanks as well to everyone who helped. I'm tied up with personal matters currently and am only seeing this thread now. ---- On Mon, 01 May 2023 07:36:23 -0400 Ihor Radchenko wrote --- > The only way I know how to work around this is a giant one-liner like > echo '....'; ; echo '...' > > However, (1) ";" may not work in some shells; (2) may > contain multiple lines, leading to the same issue. > > Matt, maybe you have some ideas about this edge case? I have no other ideas within the current ob-shell implementation. As for modifications, I have the following thoughts. First, how might we state the problem for this edge case? To me, it looks like, "How can the ob-shell :async option manage interactive input?" Do you agree with this formulation? If not, how do you see it differently? One thought is to update :async to work with the :stdin option so that the block is run as a script. Currently, :stdin runs synchronously in a separate shell. We might be able to grab the script's output and put it into the session buffer. See how the following runs in a temporary shell, regardless of the :session/:async options. #+name: answers Matt yes #+begin_src sh :stdin answers :results output :session *test* :async echo -n "What's your name?" read -r name echo echo "Hello, $name!" echo -n "Would you like to continue?" read -r continue echo if [ $continue == 'yes' ]; then echo "Continuing..." sleep 3 echo "Process complete" else echo "Aborted" fi #+end_src #+RESULTS: : What's your name? : Hello, Matt! : Would you like to continue? : Continuing... : Process complete