Robert Elz wrote in
 <19942.1742090...@jacaranda.noi.kre.to>:
 |    Date:        Sun, 16 Mar 2025 02:35:12 +0100
 |    From:        Steffen Nurpmeso <stef...@sdaoden.eu>
 |    Message-ID:  <20250316013512.2aC3SIyk@steffen%sdaoden.eu>
 |
 || The problem is not an empty field.
 |
 |Your problem might not be, but it all derives from that.
 |
 || The problem is that ":a:" has to be splitted to ""+a by itself, not to
 || ""+a+"", as the second : only delimits the "a".
 |
 |Sure, and if that was the input, that would be what happens.   But it
 |isn't that ":a:" is an apparent internal implementation artifact, and
 |what happens with that isn't specified anywhere.
 |
 |As I said in another message, I could explain (at least what happens
 |in the NetBSD sh, not what happens in bash necessarily, that might be
 |quite different) but I doubt it would help, and it certainly wouldn't
 |be appropriate for bug-bash.

True.  The only logical consequence, and here we come to the
message of Greg Wooledge, is

  +                       /* In order to be compatible with bash, NetBSD sh and 
NetBSD ksh, at minimum, we need to
  +                        * deriviate from POSIX standardized behaviour, and 
field split the quoted variant instead!
  +                        * This applies to $@ as well as $* */
  +                       if(*spcp->spc_ifs != '\0' && 
!su_cs_is_space(*spcp->spc_ifs)){
  +                               cp = n_var_vlook(n_star, TRU1);
  +                               goto jfs_split;
  +                       }
  +
  +                       /* In all other cases individually field split the 
expanded parameters */

and with that applied the test produces identical behaviour to all
of you, including bash.

 || But say, isn't ksh88 the template for POSIX,
 |
 |It was, but ksh88 is so seldom seen any more that its influence
 |has waned.
 |
 || and if so, is the above standard saying now ksh88 and all the
 || shells deviate,
 |
 |No, the standards writer noticed that shells did different things in
 |this area, and as they couldn't convince everyone to change, they
 |simply made the behaviour (semi-)unspecified (not really, as there
 |aren't arbitrary choices allowed, just to drop an empty field or not).
 |
 || or is the above one of those not "sooo" seldom
 || occasions where application behaviour was not hundred percent
 || correctly taken over to the initial standard document?
 |
 |I haven't looked back to see what the first SUS said about this
 |(if I even have access to an early enough version), but that's
 |ancient now, and no longer of any real relevance to anything.
 |
 || In the latter case there should be an issue.
 |
 |Issue related to what?   There are LOTS of places (in the shell, and
 |elsewhere) where variant behaviour exists, and is documented as existing.
 |
 |Another (which happened to just come up in an entirely unrelated context,
 |earlier this morning (here)) is that the pre and post decrement C arith
 |operators aren't required to be implemented in $(( )) expansions.  They
 |can be, or they can be omitted.   There are shells that do each.
 |
 |There's nothing odd here, except perhaps that the one standard is attemp\
 |ting
 |to both specify what users can expect to work in existing (conforming)
 |implementations, and what new implementations should implement, and \
 |sometimes
 |can't quite work out which of those is more important.
 |
 || This was, if i recall correctly, about the "empty fields *may* be
 || discarded".
 |
 |Yes.
 |
 || And that is not the issue here.
 |
 |But it is, you've just ventured so far down the rabbit hole that you're
 |not seeing that.

Yes, Robert, i do not see the relation.  Maybe i am only too
tired.

 || at least real Spring is only three to four days ahead!!
 |
 |Here we have about a month to go before the middle of summer (or
 |maybe the start of summer is in a few days, perhaps, the hottest
 |period will be in about a month.)   I doubt that will affect $*
 |expansions though.

And unquoted $@.

 --End of <19942.1742090...@jacaranda.noi.kre.to>

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

Reply via email to