(command.CommandList children: [ (C {<set>} {<-e>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:std) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [54] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CC) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [57] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expected_list) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [60] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:all_data_files) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [63] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_list) op: assign_op.Equal rhs: (word.Empty) spids: [67] ) ] ) (command.ForEach iter_name: f iter_words: [{($ Id.VSub_DollarName '$all_data_files')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:h) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name f> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<data> <Id.Lit_Slash '/'>} ) ) } spids: [82] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:h) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name h> suffix_op: (suffix_op.Unary tok:<Id.VOp1_Percent '%'> arg_word:{<-data>}) ) } spids: [91] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$CC')} {<-D> ($ Id.VSub_DollarName '$std')} {<-x>} {<c>} {<-E>} {($ Id.VSub_DollarName '$f')} ) (C {<sed>} {<-e>} {(SQ <'/^#/d'>)} {<-e>} {(SQ <'/^[ \t]*$/d'>)}) ] negated: F ) ) } spids: [99] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$exp'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_list) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$new_list') <' '> ($ Id.VSub_DollarName '$h')) } spids: [146] ) ] ) ] spids: [132 143] ) ] ) ] ) ) (C {<echo>} { (DQ <'Headers with expectations for '> ($ Id.VSub_DollarName '$std') <': '> ($ Id.VSub_DollarName '$new_list') ) } ) (C {<echo>} {(DQ <'Expected list: '> ($ Id.VSub_DollarName '$expected_list'))}) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:rc) op:assign_op.Equal rhs:{<0>} spids:[176])] ) (command.ForEach iter_name: h iter_words: [{($ Id.VSub_DollarName '$expected_list')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName '$new_list') <' '>)} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName '$h') <' '>) <Id.Lit_Star '*'>} ] spids: [203 211 214 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} {(DQ <'Missing expectations for '> ($ Id.VSub_DollarName '$h') <.>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {<1>} spids: [231] ) ] ) ] spids: [217 219 235 -1] ) ] ) ] ) ) (command.ForEach iter_name: h iter_words: [{($ Id.VSub_DollarName '$new_list')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName '$expected_list') <' '>)} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName '$h') <' '>) <Id.Lit_Star '*'>} ] spids: [266 274 277 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} {(DQ <'Spurious expectations for '> ($ Id.VSub_DollarName '$h') <.>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {<1>} spids: [294] ) ] ) ] spids: [280 282 298 -1] ) ] ) ] ) ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_DollarName '$rc')}) ] )