(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (C {<.>} { (DQ (braced_var_sub token: <Id.VSub_Name srcdir> suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<.>}) ) <'/tests/init.sh'> ) } ) terminator: <Id.Op_Semi _> ) (C {<path_prepend_>} {<'./src'>}) ] ) (C {<print_ver_>} {<chgrp>}) (C {<require_membership_in_two_groups_>}) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {($ Id.VSub_DollarName '$groups')}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [76] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g2) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [79] ) ] ) (C {<touch>} {<f>}) (C {<ln>} {<-s>} {<f>} {<symlink>}) (command.Simple words: [{<chgrp>} {<-h>} {($ Id.VSub_DollarName '$g2')} {<symlink>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<symlink>}))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [120] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g2')} ) (C {<skip_>} {(DQ <'your system doesn\'t support changing the owner or group'>)} {(DQ <'of a symbolic link.'>)} ) ] ) (C {<chgrp>} {($ Id.VSub_DollarName '$g1')} {<f>}) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<f>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [169] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g1')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [185] ) ] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<chgrp>} {<-h>} {($ Id.VSub_DollarName '$g2')} {<symlink>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [199] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<f>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [215] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g1')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [231] ) ] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<symlink>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [247] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g2')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [263] ) ] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<chgrp>} {<-h>} {($ Id.VSub_DollarName '$g2')} {<symlink>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [280] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<f>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [296] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g1')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [312] ) ] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<symlink>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [328] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g2')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [344] ) ] ) ] ) ] ) (C {<chgrp>} {($ Id.VSub_DollarName '$g2')} {<f>}) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<f>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [367] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g2')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [383] ) ] ) ] ) ] ) (C {<chgrp>} {<--dereference>} {($ Id.VSub_DollarName '$g1')} {<symlink>}) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<f>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [417] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g1')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [433] ) ] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<set>} {<Id.Lit_Underscore _>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<symlink>}))} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:g) op: assign_op.Equal rhs: {($ Id.VSub_Number '$5')} spids: [449] ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$g2')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fail) op: assign_op.Equal rhs: {<1>} spids: [465] ) ] ) ] ) ] ) (C {<Exit>} {($ Id.VSub_DollarName '$fail')}) ] )