(CommandList children: [ (FuncDef name: err_exit body: (BraceGroup children: [ (C {(print)} {(-u2)} {(-n)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">))}) (C {(print)} {(-u2)} {(-r)} {(${ VSub_Name Command) (Lit_Other "[") ($ VSub_Number "$1") (Lit_Other "]") (Lit_Other ":") } { (DQ (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [90 94] ) ) } ) (C {(let)} {(Lit_VarLike "Errors+=") (1)}) ] spids: [61] ) spids: [57 60] ) (C {(alias)} {(Lit_VarLike "err_exit=") (SQ <"err_exit $LINENO">)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:Command) op: Equal rhs: { (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)}) spids: [114 119] ) } spids: [113] ) ] spids: [113] ) (C {(integer)} {(Lit_VarLike "Errors=") (0)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:bar) op:Equal rhs:{(foo2)} spids:[127])] spids: [127] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bam) op: Equal rhs: {(foo) (Lit_Other "[") (3) (Lit_Other "]")} spids: [130] ) ] spids: [130] ) (ForEach iter_name: i iter_words: [{(foo1)} {(foo2)} {(foo3)} {(foo4)} {(foo5)} {(foo6)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(0)} spids:[156])] spids: [156] ) (Case to_match: {($ VSub_Name "$i")} arms: [ (case_arm pat_list: [{(foo1)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(1)} spids:[170])] spids: [170] ) ] spids: [167 168 172 -1] ) (case_arm pat_list: [{($ VSub_Name "$bar")}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(2)} spids:[178])] spids: [178] ) ] spids: [175 176 180 -1] ) (case_arm pat_list: [{($ VSub_Name "$bam")}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(3)} spids:[186])] spids: [186] ) ] spids: [183 184 188 -1] ) (case_arm pat_list: [{(foo) (Lit_Other "[") (4) (Lit_Other "]")}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(4)} spids:[197])] spids: [197] ) ] spids: [191 195 199 -1] ) (case_arm pat_list: [ { (BracedVarSub token: <VSub_Name bar> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{("?")}) spids: [202 206] ) (5) } ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(5)} spids:[211])] spids: [211] ) ] spids: [202 208 213 -1] ) (case_arm pat_list: [ { (DQ (BracedVarSub token: <VSub_Name bar> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{("?")}) spids: [217 221] ) (6) ) } ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:foo) op:Equal rhs:{(6)} spids:[227])] spids: [227] ) ] spids: [217 224 229 -1] ) ] spids: [160 164 232] ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$i")} right: {(foo) ($ VSub_Name "$foo")} ) ) ] action: [(C {(err_exit)} {(DQ ($ VSub_Name "$i") (" not matching correct pattern"))})] spids: [-1 249] ) ] spids: [-1 259] ) ] spids: [154 261] ) spids: [141 -1] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:f) op:Equal rhs:{(DQ ("[ksh92]"))} spids:[263])] spids: [263] ) (Case to_match: {($ VSub_Name "$f")} arms: [ (case_arm pat_list: [ {(EscapedLiteralPart token:<Lit_EscapedChar "\\[">) (Lit_Other "*") (EscapedLiteralPart token:<Lit_EscapedChar "\\]">) } ] spids: [274 277 279 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(err_exit)} { (DQ ($ VSub_Name "$f") (" does not match ") (EscapedLiteralPart token:<Lit_EscapedChar "\\[">) ("*") (EscapedLiteralPart token:<Lit_EscapedChar "\\]">) ) } ) ] spids: [281 282 293 -1] ) ] spids: [268 272 295] ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {($ VSub_Name "$SHELL")} {(-c)} { (SQ <"\n"> <"\t\tx=$(case abc {\n"> <"\t\t\tabc)\t{ print yes;};;\n"> <"\t\t\t*)\t print no;;\n"> <"\t\t\t}\n"> <"\t\t)\n"> <"\t\tprint -r -- \"$x\""> ) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [317] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [302 320] ) } right: {(yes)} ) ) ] action: [(C {(err_exit)} {(SQ <"case abc {...} not working">)})] spids: [-1 328] ) ] spids: [-1 336] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (CommandSubPart command_list: (CommandList children: [ (C {($ VSub_Name "$SHELL")} {(-c)} { (SQ <"case a in\n"> <"a) print -n a > /dev/null ;&\n"> <"b) print b;;\n"> <esac> ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [340 351] ) } right: {(b)} ) ) (C {(err_exit)} {(SQ <"bug in ;& at end of script">)}) ] op_id: Op_DAmp ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {($ VSub_Name "$SHELL")} {(-c)} { (SQ <"\n"> <"\ttmp=foo\n"> <"\tfor i in a b\n"> <"\tdo\tcase $i in\n"> <"\t\ta)\t: tmp=$tmp tmp.h=$tmp.h;;\n"> <"\t\tb)\t( tmp=bar )\n"> <"\t\t\tfor j in a\n"> <"\t\t\tdo\tprint -r -- $tmp.h\n"> <"\t\t\tdone\n"> <"\t\t\t;;\n"> <"\t\tesac\n"> <"\tdone\n"> ) } ] more_env: [(env_pair name:VMDEBUG val:{(1)} spids:[370])] ) ] ) left_token: <Left_CommandSub "$("> spids: [369 391] ) } right: {(foo.h)} ) ) (C {(err_exit)} {(DQ ("optimizer bug"))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {($ VSub_Name "$SHELL")} {(-ec)} {(SQ <"case a in a) echo 1; false; echo 2 ;& b) echo 3;; esac">)} ) ] ) left_token: <Left_CommandSub "$("> spids: [409 417] ) } spids: [408] ) ] spids: [408] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name "$x")} right:{(1)}) ) (C {(err_exit)} {(SQ <"set -e ignored on case fail through">)}) ] op_id: Op_DPipe ) (C {(exit)} { (ArithSubPart anode: (TernaryOp cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:Errors) right: (ArithWord w:{(Lit_Digits 125)}) ) true_expr: (ArithVarRef name:Errors) false_expr: (ArithWord w:{(Lit_Digits 125)}) ) spids: [440 449] ) } ) ] )