You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Joachim Ansorg edited this page Jul 5, 2024
·
7 revisions
Quote parameters to tr to prevent glob expansion.
Problematic code:
tr -cd [:digit:]
Correct code:
tr -cd '[:digit:]'
Rationale:
From the shell's point of view, unquoted [:digit:] is a glob equivalent to [digit:] that matches any single character filename from the group, such as d or t, in the current directory.
If someone starts learning D and creates a directory named d to hold the source code, the glob will be expanded and the script will end up executing tr -cd d instead, which is clearly unintended.
Quoting the argument prevents this, and will pass it correctly as the literal string [:digit:] no matter which files exist in the current directory.