Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14873 > unrolled thread

Re: Bash removes unrequested characters in bracket expressions (not a range).

Started byChet Ramey <chet.ramey@case.edu>
First post2018-11-24 17:32 -0500
Last post2018-11-24 17:32 -0500
Articles 1 — 1 participant

Back to article view | Back to gnu.bash.bug

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Bash removes unrequested characters in bracket expressions (not a range). Chet Ramey <chet.ramey@case.edu> - 2018-11-24 17:32 -0500

#14873 — Re: Bash removes unrequested characters in bracket expressions (not a range).

FromChet Ramey <chet.ramey@case.edu>
Date2018-11-24 17:32 -0500
SubjectRe: Bash removes unrequested characters in bracket expressions (not a range).
Message-ID<mailman.5069.1543846704.1284.bug-bash@gnu.org>
On 11/24/18 4:32 PM, Bize Ma wrote:

>     > Bash is removing characters not explicitly listed in a bracket
>     > expression (character range).
>     > In this example, it is removing digits from other languages.
> 
>     What is your locale?
> 
>  
> The locale used was en_US.utf-8 but also happens with  459
> locales out of 868 available under Debian (not in C, for example).
> 
> Also in all locales affected (except one), setting either
> LC_ALL=$loc or LC_COLLATE=$loc did the same.
> Except in zh_CN.gb18030
> 
> But IMO locale collation should not be used for an explicit list.

Collation order is used for each individual character in a bracket
expression when compared against the string, as posix specifies.

> I have been made aware that there is a
>       cstart = cend = FOLD (cstart);
> inside the `sm_loop.c` file that will convert into a range many
> individual character. If that understanding is correct that is the
> source of the difference with other shells.

I'm not sure what you mean by "convert into a range." If cstart and cend
were treated as a range, the start end and end characters would be the
same. If cstart == cend, a character that collates >= cstart and <= cend
would have to collate equal to cstart and cend.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
		 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/

[toc] | [standalone]


Back to top | Article view | gnu.bash.bug


csiph-web