On Tue, Mar 22, 2022 at 08:05:21PM -0700, L A Walsh wrote:

> > > > > Repeat-By:
> > > > >    Code: x=("/"); for i in "${x[@]%/}"; do echo "i is '$i'"; done
> > > > >    Result: none
> > > > >    Expected result: i is ''

> Sorry, I got sidetracked.  In this case it wouldn't matter,
> if you have no directories where you are running this,
> then nothing will match, and it
> will be a null (empty) expression. The
> for i in X [Y [Z]], statement will execute once for each
> non-null value after the 'in'.  If there are no expressions,
> then it won't execute.  Thus there should be no output.

The array 'x' has one element in it, so "${x[@]}" should expand to
one word.  Likewise, one would expect "${x[@]%whatever}" to expand to
a single word also, regardless of the actual content of the array, or
the value of 'whatever'.  Prior to bash 4.2, it did.

Reply via email to