Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH] don't exit shell on [[ -o invalid@option ]]
Daniel Shahaf wrote on Mon, Nov 20, 2017 at 01:22:41 +0000:
> I'm quite swamped this week (in a good way) but when I get a chance I'll
> finish the patch and push. (Needs more tests and a README blurb, at least)
Interdiff:
diff --git a/README b/README
index 6fad1d516..59abf29b2 100644
--- a/README
+++ b/README
@@ -54,6 +54,18 @@ foo=([aeiou]\=vowel)
This is only required for array values contained within parentheses;
command line expansion for normal arguments has not changed.
+3) The syntax
+
+[[ -o foo ]]
+
+where foo is not the name of a shell option (with optional underscores
+and optional "no" prefix) used to be treated as a syntax error, i.e.,
+the enclosing command line or file were aborted. It now emits a warning
+and returns a non-zero exit code. For further details, see the
+documentation of the -o switch in the chapter "Conditional Expressions"
+in the zshmisc(1) manual.
+
+
Incompatibilities between 5.3.1 and 5.4.2
-----------------------------------------
diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst
index 04e1ca8f2..4ffb07dd4 100644
--- a/Test/C02cond.ztst
+++ b/Test/C02cond.ztst
@@ -440,14 +440,15 @@ F:Failures in these cases do not indicate a problem in the shell.
> [[ 'a' == 'b' || 'b' = 'c' || 'c' != 'd' ]]
>}
- (setopt posixbuiltins; eval '[[ -o invalidoption ]]; echo set: $?'; echo "no warning" >&2)
+ (setopt posixbuiltins; [[ -o invalidoption ]]; echo set: $?; echo "line 1: no warning" >&2)
(unsetopt posixbuiltins; [[ -o invalidoption ]]; echo unset: $?)
[[ -o invalidoption || -n nonempty ]]; echo "in disjunction, true: $?"
[[ -o invalidoption || -z nonempty ]]; echo "in disjunction, false: $?"
[[ ! -o invalidoption ]]; echo "negated: $?"
+ [[ -o invalidoption && -n nonempty ]] || echo "in conjunction: $?"
0:-o invalidoption
>set: 1
-?no warning
+?line 1: no warning
>unset: 3
?(eval):2: no such option: invalidoption
>in disjunction, true: 0
@@ -456,6 +457,8 @@ F:Failures in these cases do not indicate a problem in the shell.
?(eval):4: no such option: invalidoption
>negated: 3
?(eval):5: no such option: invalidoption
+>in conjunction: 3
+?(eval):6: no such option: invalidoption
%clean
# This works around a bug in rm -f in some versions of Cygwin
Messages sorted by:
Reverse Date,
Date,
Thread,
Author