From ad16356e1923ec1b4daf97b27b10a835cfe73ba7 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 19 Jan 2016 17:24:12 +0000 Subject: 37689: ! and ^ need to be tokenised in character sets --- README | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'README') diff --git a/README b/README index 2e2ebce2b..6e5b73067 100644 --- a/README +++ b/README @@ -29,17 +29,43 @@ Zsh is a shell with lots of features. For a list of some of these, see the file FEATURES, and for the latest changes see NEWS. For more details, see the documentation. -Incompatibilities between 5.1 and 5.2 +Incompatibilities between 5.2 and 5.3 ------------------------------------- +In character classes delimited by "[" and "]" within patterns, whether +used for filename generation (globbing) or other forms of pattern +matching, it used not to be possible to quote "-" when used for a range, +or "^" and "!" when used for negating a character set. The characters can +now be quoted by any of the standard shell means, but note that +the "[" and "]" must not be quoted. For example, + + [[ $a = ['a-z'] ]] + +matches if the variable a contains just one of the characters "a", "-" +or "z" only. Previously this would have matched any lower case ASCII +letter. Note therefore the useful fact that + + [[ $a = ["$cset"] ]] + +matches any character contained in the variable "cset". A consequence +of this change is that variables that should have active ranges need +(with default zsh options) to be indicated explicitly, e.g. + + cset="a-z" + [[ b = [${~cset}] ]] + +The "~" causes the "-" character to be active. In sh emulation the +"~" is unncessary in this example and double quotes must be used to +suppress the range behaviour of the "-". + +Incompatibilities between 5.0.8 and 5.2 +--------------------------------------- + The behaviour of the parameter flag (P) has changed when it appears in a nested parameter group, in order to make it more useful in such cases. A (P) in the outermost parameter group behaves as before. See NEWS for more. -Incompatibilities between 5.0.8 and 5.1 ---------------------------------------- - The default behaviour when text is pasted into an X Windows terminal has changed significantly (unless you are using a very old terminal emulator that doesn't support this mode). Now, the new "bracketed paste mode" -- cgit 1.4.1