(CommandList children: [ (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FORK'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TIMEOUT) op: Equal rhs: { (BracedVarSub token: <VSub_Name TIMEOUT> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(180)}) spids: [25 29] ) } spids: [24] ) ] spids: [24] ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(.)} {(sources/utility_functions.sh)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (FuncDef name: dotest body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FORK'))} {(Lit_Other ']')}) (C {(echo)} {(-n)} {(DQ ('Testing ') ($ VSub_Number '$1') (':'))}) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VERBOSITY) op: Equal rhs: {(DQ ('tee >(cat >&2) |'))} spids: [89] ) ] spids: [89] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [{(more/smoketest.sh)} {(DQ ($ VSub_Number '$1'))}] redirects: [(Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) (C {(eval)} {(DQ ($ VSub_Name '$VERBOSITY') (" grep 'Hello world!'"))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [97 115] ) ) } spids: [95] ) ] spids: [95] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (FAIL))} spids: [131] ) ] spids: [131] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (PASS))} spids: [138] ) ] spids: [138] ) ] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FORK'))} {(Lit_Other ']')}) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) (C {(echo)} {(DQ ('Testing ') ($ VSub_Number '$1') (':') ($ VSub_Name '$RESULT'))}) ] ) (SimpleCommand words: [{(rm)} {(-f)} {(build/system-image-) (DQ ($ VSub_Number '$1')) (/hdb.img)}] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) ] spids: [49] ) spids: [43 48] ) (ForEach iter_name: i iter_words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(ls)} {(-d)} {(sources/targets/) (Lit_Other '*')}) (C {(sed)} {(SQ <'s@.*/@@'>)}) (C {(grep)} {(-v)} {(DQ ('^hw-'))}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [203 228] ) } ] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-e)} {(DQ (build/system-image-) ($ VSub_Name '$i'))} {(Lit_Other ']')} ) ] action: [(C {(maybe_fork)} {(DQ ('dotest ') ($ VSub_Name '$i'))})] spids: [16777215 247] ) ] else_action: [(C {(echo)} {(DQ ('Testing ') ($ VSub_Name '$i') (':NONE'))})] spids: [258 270] ) ] spids: [230 272] ) spids: [202 16777215] ) (C {(wait)}) ] )