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

Reply via email to