(command.CommandList children: [ (C {<set>} {<-e>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:common_objpfx) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [54] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_program_prefix) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [57] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:objpfx) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [60] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(${ Id.VSub_Name test_program_prefix)} {(${ Id.VSub_Name objpfx) <test-freopen>} {(${ Id.VSub_Name objpfx) <test-freopen.out>} ) (command.Simple words: [{<cmp>} {(${ Id.VSub_Name objpfx) <test-freopen.out>} {<->}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(DQ <EOF>)} here_end_span_id: 96 stdin_parts: [<'Hello world (mb)\n'> <'Hello world (wc)\n'>] ) ) ] do_fork: T ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_QMark '$?')}) ] )