(CommandList children: [ (Sentence child: (C {(.)} { (DQ (BracedVarSub token: <VSub_Name srcdir> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)}) spids: [47 51] ) (/tests/init.sh) ) } ) terminator: <Op_Semi ';'> ) (C {(path_prepend_)} {(./src)}) (C {(print_ver_)} {(chgrp)}) (C {(require_membership_in_two_groups_)}) (Sentence child:(C {(set)} {(_)} {($ VSub_Name '$groups')}) terminator:<Op_Semi ';'>) (C {(shift)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:g2) op:Equal rhs:{($ VSub_Number '$2')} spids:[76])] spids: [76] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(mkdir)} {(d)}) (C {(touch)} {(f)}) (C {(ln)} {(-s)} {(../f)} {(d/s)}) (C {(framework_failure_)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:g_init) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(stat)} {(--printf) (Lit_Other '=') (Lit_Other '%') (g)} {(f)})] ) left_token: <Left_CommandSub '$('> spids: [107 116] ) } spids: [106] ) ] spids: [106] ) (AndOr ops: [Op_DPipe] children: [ (C {(chgrp)} {(-R)} {($ VSub_Name '$g2')} {(d)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[128])] spids: [128] ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} { (CommandSubPart command_list: (CommandList children: [(C {(stat)} {(--printf) (Lit_Other '=') (Lit_Other '%') (g)} {(f)})] ) left_token: <Left_CommandSub '$('> spids: [133 142] ) } {(Lit_Other '=')} {($ VSub_Name '$g_init')} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[150])] spids: [150] ) ] ) (C {(Exit)} {($ VSub_Name '$fail')}) ] )