(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:dirmode) op:Equal rhs:{(DQ )})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:linkmode) op:Equal rhs:{(DQ )})] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.Case to_match: {($ VSub_Number '$1')} arms: [ (case_arm pat_list: [{(-d)}] action: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dirmode) op: Equal rhs: {(DQ (YES))} ) ] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] ) (case_arm pat_list: [{(-) (Lit_Other '[') (bCcpSsv) (Lit_Other ']')}] action: [(C {(shift)})] ) (case_arm pat_list: [{(-) (Lit_Other '[') (BDfghMmNoTU) (Lit_Other ']')}] action: [(command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>) (C {(shift)})] ) (case_arm pat_list: [{(-) (Lit_Other '[') (BDfghMmNoTU) (Lit_Other ']') (Lit_Other '*')}] action: [(C {(shift)})] ) (case_arm pat_list: [{(-l)}] action: [ (C {(shift)}) (command.Case to_match: {($ VSub_Number '$1')} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (Lit_Other '[') (sm) (Lit_Other ']') (Lit_Other '*')} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:linkmode) op: Equal rhs: {(DQ (symbolic))} ) ] ) ] ) (case_arm pat_list: [{(Lit_Other '*') (h) (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:linkmode) op: Equal rhs: {(DQ (hard))} ) ] ) ] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Sentence child: (C {(echo)} {(DQ ('invalid link mode'))}) terminator: <Op_Semi ';'> ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] ) ] ) (C {(shift)}) ] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Sentence child: (command.ControlFlow token:<ControlFlow_Break break>) terminator: <Op_Semi ';'> ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (': no files/dirs specified'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$dirmode'))} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-lt)} {(2)} {(Lit_Other ']')}) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (': no target specified'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name linkmode))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name linkmode))} {(Lit_Other '=')} {(DQ (symbolic))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(ln)} {(-fsn)} {(DQ ($ VSub_At '$@'))})] ) ] else_action: [(C {(ln)} {(-f)} {(DQ ($ VSub_At '$@'))})] ) ] ) (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$dirmode'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(exec)} {(install)} {(-p)} {(DQ ($ VSub_At '$@'))})] ) ] else_action: [(C {(exec)} {(install)} {(-d)} {(DQ ($ VSub_At '$@'))})] ) ] )