> Date: Tue, 23 Apr 2019 15:49:18 -0600 > From: Ian Neal <w...@wopr.tech> > Message-ID: <CADBEB3qA0J1-j=iO5t_63h-Ksea1h6YGRnuU= > 1_z7uy+7rv...@mail.gmail.com> > > | When using arithmetic expansion with variable pre- and > | post-increments/decrements in the output redirection file path, > | specifically on external executables (not builtins or functions), the > state > | of the variable being incremented/decremented is not persisted in the > | environment. > > That is as it should be, redirects are eveluated in the sub-shell > context. If anything the bug you showed is that redirects when the > shell does not fork are being evaluated in the context of the shell > (but I think that might be an unspecified case). > > In general it is best not to even consider using any evaluation with > side effects in any redirection, and unless you really consider what > you're doing, not in var-assigns either (there, if you're not expecting > the side effects to be visible in the same, or any other, assignemnt > in the same command you should be OK). > > kre >
At what point is a subshell being invoked? There's no pipeline, command substitution, coprocess, background process, or explicit () subshell here, which are the only cases a subshell should be created. Otherwise, the entire operation should be evaluated by the main shell. Arithmetic expansion is not in that list. >