(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:y) op:assign_op.Equal rhs:{<23>} spids:[85])] ) (command.ForEach iter_name: i iter_words: [{<0>} {<1>} {<3>}] 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:[116])] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:y) op:assign_op.Equal rhs:{<b>} spids:[119])] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<29>} spids:[122])] ) (C {<echo>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<fn3>} {<30>}))}) (C {<fn3>} {<31>}) (command.Sentence child:(C {<fn1>}) terminator:<Id.Op_Semi _>) (C {<fn3>} {<33>}) (C {<source>} {<'../example/dbg-test1.sub'>}) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] )