bug#13295: Possible bug - tr utility

2012-12-29 Thread Paul Eggert
Closing the bug, then





bug#13295: Possible bug - tr utility

2012-12-28 Thread Killen, Randy
Hello -

I encountered the situation shown below so thought that I would report it to 
see if it might be a bug or is expected behavior.  Please let me know if you 
need additional information.

Randy


$
$ echo something | tr [:lower:] [:upper:]
SOMETHING
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$
$ touch l
$ echo something | tr [:lower:] [:upper:]
tr: misaligned [:upper:] and/or [:lower:] construct
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm l
$
$ touch u
$ echo something | tr [:lower:] [:upper:]
tr: misaligned [:upper:] and/or [:lower:] construct
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm u
$
$ touch l
$ touch u
$ echo something | tr [:lower:] [:upper:]
something
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm l
$ rm u
$
$
$ uname -srvo
Linux 2.6.18-274.18.1.0.1.el5 #1 SMP Thu Feb 9 19:07:16 EST 2012 GNU/Linux
$ echo $SHELL
/bin/bash
$
Notice:  All email and instant messages (including attachments) sent to
or from Franklin Templeton Investments (FTI) personnel may be retained,
monitored and/or reviewed by FTI and its agents, or authorized
law enforcement personnel, without further notice or consent.


bug#13295: Possible bug - tr utility

2012-12-28 Thread Erik Auerswald

Hi Randy,

On 12/28/2012 06:37 PM, Killen, Randy wrote:

Hello -

I encountered the situation shown below so thought that I would report it to 
see if it might be a bug or is expected behavior.  Please let me know if you 
need additional information.

Randy


$
$ echo something | tr [:lower:] [:upper:]
SOMETHING
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$
$ touch l
$ echo something | tr [:lower:] [:upper:]
tr: misaligned [:upper:] and/or [:lower:] construct
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm l
$
$ touch u
$ echo something | tr [:lower:] [:upper:]
tr: misaligned [:upper:] and/or [:lower:] construct
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm u
$
$ touch l
$ touch u
$ echo something | tr [:lower:] [:upper:]
something
$ echo something | tr '[:lower:]' '[:upper:]'
SOMETHING
$ rm l
$ rm u


This is expected behavior, caused by lack of quoting that results in the 
shell (Bash) interpreting [...] as a wildcard pattern for file name 
globbing (see glob(7)). If the 'nullglob' option of the shell is 
disabled (use 'shopt nullglob' to display the current setting), a 
wildcard that matches no files is kept as is. Thus the wildcards 
[:lower:] and [:upper:] are either replaced by l resp. u if one of those 
files exist or kept, if no matching file exists.


Quoting the special characters '[' and ']' by using '[:lower:]' resp. 
'[:upper:]' (including the quotes) inhibits the shell from interpreting 
them as file globbing wildcards. Therefore, you should always quote 
character classes that are meant as arguments to a program.


HTH
Erik





bug#13295: Possible bug - tr utility

2012-12-28 Thread Killen, Randy
Thanks Erik. That does help.

Randy

-Original Message-
From: Erik Auerswald [mailto:auers...@unix-ag.uni-kl.de] 
Sent: Friday, December 28, 2012 3:47 PM
To: Killen, Randy; 13...@debbugs.gnu.org
Subject: Re: bug#13295: Possible bug - tr utility

Hi Randy,

On 12/28/2012 06:37 PM, Killen, Randy wrote:
 Hello -

 I encountered the situation shown below so thought that I would report it to 
 see if it might be a bug or is expected behavior.  Please let me know if you 
 need additional information.

 Randy


 $
 $ echo something | tr [:lower:] [:upper:] SOMETHING $ echo something | 
 tr '[:lower:]' '[:upper:]'
 SOMETHING
 $
 $ touch l
 $ echo something | tr [:lower:] [:upper:]
 tr: misaligned [:upper:] and/or [:lower:] construct $ echo something | 
 tr '[:lower:]' '[:upper:]'
 SOMETHING
 $ rm l
 $
 $ touch u
 $ echo something | tr [:lower:] [:upper:]
 tr: misaligned [:upper:] and/or [:lower:] construct $ echo something | 
 tr '[:lower:]' '[:upper:]'
 SOMETHING
 $ rm u
 $
 $ touch l
 $ touch u
 $ echo something | tr [:lower:] [:upper:] something $ echo something | 
 tr '[:lower:]' '[:upper:]'
 SOMETHING
 $ rm l
 $ rm u

This is expected behavior, caused by lack of quoting that results in the shell 
(Bash) interpreting [...] as a wildcard pattern for file name globbing (see 
glob(7)). If the 'nullglob' option of the shell is disabled (use 'shopt 
nullglob' to display the current setting), a wildcard that matches no files is 
kept as is. Thus the wildcards [:lower:] and [:upper:] are either replaced by l 
resp. u if one of those files exist or kept, if no matching file exists.

Quoting the special characters '[' and ']' by using '[:lower:]' resp. 
'[:upper:]' (including the quotes) inhibits the shell from interpreting them as 
file globbing wildcards. Therefore, you should always quote character classes 
that are meant as arguments to a program.

HTH
Erik
Notice:  All email and instant messages (including attachments) sent to
or from Franklin Templeton Investments (FTI) personnel may be retained,
monitored and/or reviewed by FTI and its agents, or authorized
law enforcement personnel, without further notice or consent.