Pattern: Use of []
around range in tr
Issue: -
Ancient System V tr
required brackets around operands, but modern implementations including POSIX, GNU, OS X and *BSD instead treat them as literals.
Unless you want to operate on literal square brackets, don't include them.
Example of incorrect code:
tr -cd '[a-z]'
Example of correct code:
tr -cd 'a-z'
If you do want to replace literal square brackets, reorder the expression (e.g. a-z[]
to make it clear that the brackets are not special).
ShellCheck does not warn about correct usage of [..]
in character and equivalence classes like [:lower:]
and [=e=]
.