Created SC3026 (markdown)

Vidar Holen
2020-09-07 20:33:08 -07:00
parent b8839ea6d3
commit 3865a5179d

29
SC3026.md Normal file

@@ -0,0 +1,29 @@
## In POSIX sh, ^ in place of ! in glob bracket expressions is undefined.
### Problematic code:
```sh
echo foo-[^0]*.jpg
```
### Correct code:
```sh
echo foo-[!0]*.jpg
```
### Rationale:
`[^c]` is frequently used in most regular expression variants to mean "any character except `c`". This is so pervasive that bash, ksh, dash, and BusyBox ash, all allow it.
However, strictly speaking, the only range complement syntax guaranteed to be supported across shells is `[!c]`.
### 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!