It looks like I've just found a bug in (our) ksh. Not to be brave
enough to fix it right now, but I think it's still worths adding
regression test.

Bash and zsh pass this test without problem.

The idea is using the case...in...esac inside $(...) or `...`.
It starts failing when you add a single case match, i.e.:

        a=foo
        data=$(
                case $a in
                esac
        )
        echo $data

doesn't fail, while 

        a=foo
        data=$(
                case $a in
                *) echo OK;;
                esac
        )
        echo $data

fails with error:

        $ ksh tt.sh
        ./tt.sh[4]: syntax error: `;;' unexpected

What's worse, it fails even if I comment the line it's whining after.
So... okay to add a regression test?

--
WBR,
  Vadim Zhukov


Index: caseincmdsubst.t
===================================================================
RCS file: caseincmdsubst.t
diff -N caseincmdsubst.t
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ caseincmdsubst.t    29 May 2017 02:03:02 -0000
@@ -0,0 +1,26 @@
+name: case-inside-cmd-subst-parentheses
+description:
+       See if case...in...esac works inside parentesed command substitution
+stdin:
+       a=foo
+       data=$(
+               case $a in
+               *) echo OK;;
+               esac
+       )
+expected-stdout:
+       OK
+---
+name: case-inside-cmd-subst-backticks
+description:
+       See if case...in...esac works inside backticks command substitution
+stdin:
+       a=foo
+       data=`
+               case $a in
+               *) echo OK;;
+               esac
+       `
+expected-stdout:
+       OK
+---

Reply via email to