(command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'bs='> <1048576>} {<Id.Lit_VarLike 'count='> <100>} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple words: [{<'/usr/bin/time'>} {<'t/helper/test-sha1'>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] negated: F ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<expect>} {<cnt>} {<pfx>})]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$expect'))} arms: [ (case_arm pat_list: [{(SQ <'#'>) <Id.Lit_Star '*'>}] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [49 53 57 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:actual) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$pfx'))}) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$pfx'))}) ] ) (command.Pipeline children: [ (command.Simple words: [ {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'bs='> <1048576>} {<Id.Lit_VarLike 'count='> ($ Id.VSub_DollarName '$cnt')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<perl>} {<-pe>} {(SQ <'y/\\000/g/'>)}) ] negated: F ) ] ) (C {<'./t/helper/test-sha1'>} {($ Id.VSub_DollarName '$cnt')}) ] negated: F ) ) } spids: [62] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$expect'))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$actual'))} ) ] ) action: [ (C {<echo>} { (DQ <'OK: '> ($ Id.VSub_DollarName '$expect') <' '> ($ Id.VSub_DollarName '$cnt') <' '> ($ Id.VSub_DollarName '$pfx') ) } ) ] spids: [124 139] ) ] else_action: [ (command.Simple words: [{<echo>} {(DQ <'OOPS: '> ($ Id.VSub_DollarName '$cnt'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'expect: '> ($ Id.VSub_DollarName '$expect'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'actual: '> ($ Id.VSub_DollarName '$actual'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ] ) redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 222 stdin_parts: [ <'da39a3ee5e6b4b0d3255bfef95601890afd80709 0\n'> <'3f786850e387550fdab836ed7e6dc881de23001b 0 a\n'> <'5277cbb45a15902137d332d97e89cf8136545485 0 ab\n'> <'03cfd743661f07975fa2f1220c5194cbaff48451 0 abc\n'> <'3330b4373640f9e4604991e73c7e86bfd8da2dc3 0 abcd\n'> <'ec11312386ad561674f724b8cca7cf1796e26d1d 0 abcde\n'> <'bdc37c074ec4ee6050d68bc133c6b912f36474df 0 abcdef\n'> <'69bca99b923859f2dc486b55b87f49689b7358c7 0 abcdefg\n'> <'e414af7161c9554089f4106d6f1797ef14a73666 0 abcdefgh\n'> <'0707f2970043f9f7c22029482db27733deaec029 0 abcdefghi\n'> <'a4dd8aa74a5636728fe52451636e2e17726033aa 1\n'> <'9986b45e2f4d7086372533bb6953a8652fa3644a 1 frotz\n'> <'23d8d4f788e8526b4877548a32577543cbaaf51f 10\n'> <'8cd23f822ab44c7f481b8c92d591f6d1fcad431c 10 frotz\n'> <'f3b5604a4e604899c1233edb3bf1cc0ede4d8c32 512\n'> <'b095bd837a371593048136e429e9ac4b476e1bb3 512 frotz\n'> <'08fa81d6190948de5ccca3966340cc48c10cceac 1200 xyzzy\n'> <'e33a291f42c30a159733dd98b8b3e4ff34158ca0 4090 4G\n'> <'#a3bf783bc20caa958f6cb24dd140a7b21984838d 9999 nitfol\n'> ] ) ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<cnt>} {<pfx>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:actual) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$pfx'))}) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$pfx'))}) ] ) (command.Pipeline children: [ (command.Simple words: [ {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'bs='> <1048576>} {<Id.Lit_VarLike 'count='> ($ Id.VSub_DollarName '$cnt')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<perl>} {<-pe>} {(SQ <'y/\\000/g/'>)}) ] negated: F ) ] ) (C {<sha1sum>}) (C {<sed>} {<-e>} {(SQ <'s/ .*//'>)}) ] negated: F ) ) } spids: [245] ) ] ) (C {<echo>} { (DQ ($ Id.VSub_DollarName '$actual') <' '> ($ Id.VSub_DollarName '$cnt') <' '> ($ Id.VSub_DollarName '$pfx') ) } ) ] ) redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 351 stdin_parts: [ <'0\n'> <'0 a\n'> <'0 ab\n'> <'0 abc\n'> <'0 abcd\n'> <'0 abcde\n'> <'0 abcdef\n'> <'0 abcdefg\n'> <'0 abcdefgh\n'> <'0 abcdefghi\n'> <'1\n'> <'1 frotz\n'> <'10\n'> <'10 frotz\n'> <'512\n'> <'512 frotz\n'> <'1200 xyzzy\n'> <'4090 4G\n'> <'9999 nitfol\n'> ] ) ) ] ) ] )