(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<mkdir>} {<Id.KW_For for>} {<systems>} {<that>} {<Id.KW_Do do>} {<not>} {<support>} {<-p>} {<Id.Lit_Colon ':'>} {<2002-09-01>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'MKDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MKDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MKDIR='> name:MKDIR) op: assign_op.Equal rhs: {<'/bin/mkdir'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CHMOD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CHMOD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHMOD='> name:CHMOD) op: assign_op.Equal rhs: {<chmod>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mode='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mode='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'parents='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'parents='> name:parents) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-m> pattern: (pat.Words words:[{<-m>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'mkdir: -m: mode argument expected'>)}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'mode='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mode='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-m> pattern: (pat.Words words:[{<-m> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mode='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mode='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/X-m//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-p> pattern: (pat.Words words:[{<-p>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'parents='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'parents='> name:parents) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName parents))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifs='> name:ifs) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name IFS> var_name: IFS suffix_op: (suffix_op.Unary op: <Id.VTest_Hyphen _> arg_word: {(SQ <'\n'> <'\t '>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<'/'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName dir))} {<-a>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$MKDIR'> more_env: [] words: [ {($ Id.VSub_DollarName MKDIR)} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName mode))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CHMOD'> more_env: [] words: [ {($ Id.VSub_DollarName CHMOD)} {(DQ ($ Id.VSub_DollarName mode))} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [312 327] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [276 297] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dir='> name: dir ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName d)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$MKDIR'> more_env: [] words: [ {($ Id.VSub_DollarName MKDIR)} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName mode))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CHMOD'> more_env: [] words: [ {($ Id.VSub_DollarName CHMOD)} {(DQ ($ Id.VSub_DollarName mode))} {(DQ ($ Id.VSub_DollarName dir))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [393 408] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [365 378] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [226 237] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [203 217] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$MKDIR'> more_env: [] words: [{($ Id.VSub_DollarName MKDIR)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName mode))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CHMOD'> more_env: [] words: [ {($ Id.VSub_DollarName CHMOD)} {(DQ ($ Id.VSub_DollarName mode))} {(DQ ($ Id.VSub_DollarName d))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [456 471] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )