(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [16] ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:defs) op: assign_op.Equal rhs: {(DQ ('#define ') ($ Id.VSub_Number '$1'))} spids: [22] ) ] ) (C {(shift)}) (command.ForEach iter_name: def do_arg_iter: T body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:defs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$defs') ('\n') ('#define ') ($ Id.VSub_DollarName '$def') ) } spids: [37] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:t) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:TMPDIR span_id:62) suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{(.)}) ) (/gro) ($ Id.VSub_Dollar '$$') (.tmp) } spids: [60] ) ] ) (command.Simple words: [{(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/=/ /' span_id:76))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:79) fd: -1 arg_word: {($ Id.VSub_DollarName '$t')} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:82) fd: -1 here_begin: {(EOF)} here_end_span_id: 88 stdin_parts: [($ Id.VSub_DollarName '$defs') ('\n')] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(test)} {(-r)} {($ Id.VSub_DollarName '$file')}) (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$file')}) (C {(cp)} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$file')}) ] ) (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$t')}) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:122) arg_word:{(0)}) ] )