SC3026
Joachim Ansorg edited this page Nov 12, 2021
·
3 revisions
In POSIX sh, ^ in place of ! in glob bracket expressions is undefined.
Problematic code:
echo foo-[^0]*.jpgCorrect code:
echo foo-[!0]*.jpgRationale:
[^c] is frequently used in most regular expression variants to mean "any character except c". Ksh and Bash adopted it for globs as well.
However, strictly speaking, the only range complement syntax guaranteed to be supported across shells is [!c]. Dash only supports it when using fnmatch and glob from glibc.
Exceptions:
If you only intend to target shells that supports this feature, you can change the shebang to a shell that guarantees support, or ignore this warning. Or just rewrite it to be on the technically correct side.
Related resources:
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!