(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (C {<.>} { (DQ (braced_var_sub token: <Id.VSub_Name srcdir> suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{<.>}) ) <'/tests/init.sh'> ) } ) terminator: <Id.Op_Semi _> ) (C {<path_prepend_>} {<'./src'>}) ] ) (C {<print_ver_>} {<md5sum>}) (command.ForEach iter_name: i iter_words: [{(SQ <a>)} {(SQ <' b'>)} {(SQ <'*c'>)} {(SQ <dd>)} {(SQ <' '>)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$i'))} ) ] do_fork: T ) (command.Simple words: [{<md5sum>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<check.md5sum>} ) ] do_fork: T ) ] ) ) (command.Simple words: [{<sed>} {(SQ <'s/ / /'>)} {<check.md5sum>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<md5sum>} {<--strict>} {<-c>} {<check.md5sum>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [165] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [178] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<tail>} {<-n> <Id.Lit_Other '+'> <2>} {<check.md5>}) (C {<md5sum>} {<--strict>} {<-c>}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [212] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<md5sum>} {<--tag>} {<--check>} {<'/dev/null'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [234] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<md5sum>} {<--tag>} {<--text>} {<'/dev/null'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [263] ) ] ) ] ) (C {<rm>} {<check.md5>}) (command.ForEach iter_name: i iter_words: [{(SQ <a>)} {(SQ <' b'>)} {(SQ <'*c'>)} {(SQ <dd>)} {(SQ <' '>)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$i'))} ) ] do_fork: T ) (command.Simple words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})] do_fork: T ) ] ) ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [341] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:nl) op: assign_op.Equal rhs: {(SQ <'\n'>)} spids: [351] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tab) op: assign_op.Equal rhs: {(SQ <'\t'>)} spids: [356] ) ] ) (C {<rm>} {<check.md5>}) (command.ForEach iter_name: i iter_words: [ {(SQ <'a\\b'>)} {(SQ <'a\\'>)} {(DQ <a> (${ Id.VSub_Name nl) <b>)} {(DQ <a> (${ Id.VSub_Name tab) <b>)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$i'))} ) ] do_fork: T ) (command.Simple words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})] do_fork: T ) ] ) ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [431] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ex_file) op: assign_op.Equal rhs: {(SQ <'test\n'> <'\\\\file'>)} spids: [441] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ex_output) op: assign_op.Equal rhs: {(SQ <'\\MD5 (test\\n\\\\\\\\file) = d41d8cd98f00b204e9800998ecf8427e'>)} spids: [447] ) ] ) (C {<touch>} {(DQ ($ Id.VSub_DollarName '$ex_file'))}) (command.Simple words: [ {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$ex_output'))} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})] do_fork: T ) (command.Simple words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$ex_file'))}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<out>})] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<compare>} {<exp>} {<out>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [494] ) ] ) ] ) (C {<Exit>} {($ Id.VSub_DollarName '$fail')}) ] )