-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2021
Olliver Schinagl edited this page Jul 24, 2024
·
3 revisions
tr -cd '[a-z]'
tr -cd 'a-z'
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.
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=]
.
Busybox requires CONFIG_FEATURE_TR_CLASSES
for this to work. If busybox was compiled without this feature, character classes will obviously not be available, and the correct usage is to use a-z
, not [a-z]
.