GNU bug report logs -
#29421
bug in command "tr"
Previous Next
Reported by: wangjian <halfmoonhalf <at> gmail.com>
Date: Fri, 24 Nov 2017 02:19:01 UTC
Severity: normal
Tags: notabug
Done: Pádraig Brady <P <at> draigBrady.com>
Bug is archived. No further changes may be made.
Full log
Message #15 received at 29421 <at> debbugs.gnu.org (full text, mbox):
tag 29421 notabug
close 29421
stop
Hello,
On Thu, Nov 23, 2017 at 6:01 PM, wangjian <halfmoonhalf <at> gmail.com> wrote:
> Hi there, I think this is a bug
>
> mkdir empty_foler
> cd empty_foler
> touch a
> echo "abc" | tr [:blank:] + # you will get “+bc” as output, instead of “abc”
> touch b
> echo "abc" | tr [:blank:] # you will get “bbc” as output, instead of “abc”
This is not a bug, simply incorrect usage of the parameters on the shell.
Your shell (e.g. bash) expands unquoted [:blank:] to match ANY
file with names matching a/b/l/n/k , and replaces them on the commandline
BEFORE executing 'tr'.
Only if no files match a/b/l/n/k, then the string '[:blank:]' is
passed on to tr as-is.
Observe the following (in an empty directory):
$ echo [:blank:]
[:blank:]
$ touch a
$ echo [:blank:]
a
$ touch b
$ echo [:blank:]
a b
As opposed to using quotes:
$ echo "[:blank:]"
[:blank:]
And so, once you created the files a and b,
the command you executed was equivalent to
echo abc | tr a b
which indeed results in "bbc".
To avoid such issues, always quote the parameters to 'tr'.
regards,
- assaf
This bug report was last modified 7 years and 242 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.