[OE-core] shell script guidelines in oe-core? (was Re: [PATCH v4] create-pull-request: cleanup bashisms)

Mikko.Rapeli at bmw.de Mikko.Rapeli at bmw.de
Thu Aug 13 06:27:38 UTC 2015


On Wed, Aug 12, 2015 at 10:51:26AM -0700, Christopher Larson wrote:
> That reminds me, there's a shell portability issue / standards-complaince
> issue that's not identified by shellcheck. Typically, to negate a  bracket
> expression in a regular expression, one uses ^, e.g. [^a-z] is everything
> that isn't in the range a to z, but that's not the case in shell, e.g. at a
> prompt or in a ${foo#<pattern>}:
> 
>     "[...]a bracket expression as in XBD *RE Bracket Expression* , except
> that the <exclamation-mark> character ( '!' ) shall replace the
> <circumflex> character ( '^' ) in its role in a non-matching list in the
> regular expression notation"
> 
> So in shell, you'd want [!a-z] rather than [^a-z]. Nearly all shells handle
> both, but the behavior of the latter is actually unspecified according to
> the standard:
> 
>     "A bracket expression starting with an unquoted <circumflex> character
> produces unspecified results."
> 
> I recently got bitten by this with one of my shell scripts on a system
> running dash.

Does checkbashisms warn about this?

-Mikko


More information about the Openembedded-core mailing list