Starting to open the job control can of worms, and: $ while true; do readlink /proc/self | cat - $$; done 24658 cat: 20032: No such file or directory 24660 cat: 20032: No such file or directory 24662
Is calling readlink and cat each time through the loop (true is a builtin), so the pid advances by 2 and the pipeline is NOT a subshell. But: $ echo hello | read i; echo $i The read isn't saved because it's happening in a subshell context (so it sets an i that is discarded)? And then: $ while true; do continue | readlink /proc/self; done 28555 28557 28559 28561 Is advancing the pid by 2 each time, because the _continue_ is in its own process? $ while true; do continue | cat; echo hello; done hello hello hello $ while true; do break | cat; echo hello; done hello hello hello continue and break are silently NOP in a pipe? Also, just confirming: $$ only shows the PID of the top level bash process, and there's no variable that shows the PID of (subshells) even though the point of a subshell is to spawn a new process? Because unfortunately "what PID am I" turns out to be legitimately difficult to answer from a subshell (or at least I couldn't figure it out): https://landley.net/notes-2020.html#05-02-2020 Rob P.S. this is old, but: $ for i in a b c & do echo $i; done bash: syntax error near unexpected token `&' But break & is fine? What does that even _mean_? _______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net