(CommandList children: [ (Sentence child: (C {(.)} { (DQ (BracedVarSub token: <VSub_Name srcdir> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)}) spids: [50 54] ) (/tests/init.sh) ) } ) terminator: <Op_Semi ';'> ) (C {(path_prepend_)} {(./src)}) (C {(print_ver_)} {(chgrp)}) (C {(require_membership_in_two_groups_)}) (C {(skip_if_root_)}) (Sentence child:(C {(set)} {(_)} {($ VSub_Name '$groups')}) terminator:<Op_Semi ';'>) (C {(shift)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:g1) op:Equal rhs:{($ VSub_Number '$1')} spids:[81])] spids: [81] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:g2) op:Equal rhs:{($ VSub_Number '$2')} spids:[84])] spids: [84] ) (AndOr ops: [Op_DPipe] children: [(C {(mkdir)} {(-p)} {(d/no-x/y)}) (C {(framework_failure_)})] ) (AndOr ops: [Op_DPipe] children: [(C {(chmod)} {(Lit_VarLike 'u=') (rw)} {(d/no-x)}) (C {(framework_failure_)})] ) (AndOr ops: [Op_DAmp] children: [ (SimpleCommand words: [{(chgrp)} {(-R)} {($ VSub_Name '$g2')} {(d)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[122]) (Redir op_id:Redir_Great fd:2 arg_word:{(out)} spids:[125]) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[130])] spids: [130] ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:prog) op:Equal rhs:{(chgrp)} spids:[134])] spids: [134] ) (AndOr ops: [Op_DAmp] children: [ (SimpleCommand words: [ {(sed)} {(DQ ('s/^') ($ VSub_Name '$prog') (': cannot access /') ($ VSub_Name '$prog') (': /'))} {(out)} ] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(t)} spids:[170])] ) (C {(mv)} {(t)} {(out)}) ] ) (AndOr ops: [Op_DAmp] children: [ (SimpleCommand words: [ {(sed)} { (DQ ('s/^') ($ VSub_Name '$prog') (': cannot read directory /') ($ VSub_Name '$prog') (': /') ) } {(out)} ] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(t)} spids:[194])] ) (C {(mv)} {(t)} {(out)}) ] ) (AndOr ops: [Op_DAmp] children: [ (SimpleCommand words: [{(sed)} {(SQ <'s,d/no-x/y,d/no-x,'>)} {(out)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(t)} spids:[214])] ) (C {(mv)} {(t)} {(out)}) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ($ VSub_Name '$prog') (": 'd/no-x': Permission denied\n"))} do_expansion: True here_end: EOF was_filled: T spids: [229] ) (Redir op_id:Redir_Great fd:16777215 arg_word:{(exp)} spids:[232]) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(compare)} {(exp)} {(out)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[248])] spids: [248] ) ] ) (C {(Exit)} {($ VSub_Name '$fail')}) ] )