(command.CommandList children: [ (command.ShFunction name: fn1 body: (BraceGroup children: [ (C {<echo>} {(DQ <'fn1 here'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {<5>} spids: [24] ) ] ) (C {<fn3>}) ] ) ) (command.ShFunction name: fn2 body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {(DQ <fn2>)} spids: [41] ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$name') <' here'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {<6>} spids: [55] ) ] ) ] ) ) (command.ShFunction name: fn3 body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {(DQ <fn3>)} spids: [69] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [75] ) ] ) ] ) ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<22>} spids:[82])] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<23>} spids:[85])] ) (command.ForEach iter_name: i iter_words: [{<1>}] do_arg_iter: F body: (command.DoGroup children: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike x> right: <Id.Lit_ArithVarLike i> ) ) ] ) ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<27>} spids:[112])] ) (C {<echo>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<fn3>} {<30>}))}) (C {<fn3>} {<29>}) (command.Sentence child:(C {<fn1>}) terminator:<Id.Op_Semi _>) (C {<fn3>} {<31>}) (command.Case to_match: {<x>} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<x>} {<Id.Lit_Equals '='>} {<33>})] spids: [142 144 -1 152] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr:(bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ <x>)})) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {<35>} spids: [166] ) ] ) ] ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike x> right: {<Id.Lit_Digits 1>} ) ) (C {<source>} {<dbg-test1.sub>}) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] )