Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

using dynamic patterns on the left hand side of case statement clauses




i would like to use dynamic patterns on the left hand side of clauses in case statements.

i'm working in zsh current as of 3.1-91-g7595b22e on ubu 19.10.

the options set for this example are:
   setopt extended_glob
   setopt glob
   setopt no_no_match
   setopt no_null_glob

the code is:
   typeset -a a b c
   a=( one two three four )
   b=( 16 17 18 19 20 )
   c=( two 20 )
   vb=$'|'
   for d in ${c}
   do
      case ${d} in
          $( eval echo ${(j:${vb}:)a} ) ) echo "1 found it" ;;
          $( eval echo ${(j:${vb}:)b} ) ) echo "2 found it" ;;
          * )                             echo "did not find it" ;;
      esac
   done


but, when i run the code, the interpreter escapes all the vbars and forces the
entire lhs pattern to be a string.

does the case structure not allow this use case?  or am i just missing something
from not reading docs carefully enough?



Messages sorted by: Reverse Date, Date, Thread, Author