(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<wrapper>} {<Id.KW_For for>} {<.exe>} {<challenged>} {<win32>} {<'systems/commands'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {<execrate>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bins='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bins='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bins='> name:bins) op: assign_op.Equal rhs: {(SQ <'/bin /usr/bin /usr/sbin'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName command))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: execrate (AT&T Labs Research) 2002-02-02 $\n'> <Id.Char_Literals ']\n'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?execrate - wrapper for .exe challenged commands]\n' > <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals execrate> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' runs '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' after checking the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\toperands for standard semantics with respect to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals win32> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .exe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tsuffix conventions. This command is only needed on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals win32> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tsystems that inconsistently handle '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .exe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' across library and\n'> <Id.Char_Literals '\tcommand interfaces. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be one of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals chmod> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals cmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ln> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mv> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rm> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).\n'> <Id.Char_Literals '\tOnly the 2 argument forms of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ln> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mv> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are handled.\n'> <Id.Char_Literals '\tUnsupported commands and commands requiring no change are\n' > <Id.Char_Literals '\tsilently executed.]\n'> <Id.Char_Literals '[+?With no arguments '> <Id.Char_OneChar '\\b'> <Id.Char_Literals execrate> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exits with status 0 if the current system\n'> <Id.Char_Literals '\tis '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .exe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' challenged, 1 if the current system is normal.]\n'> <Id.Char_Literals '[n:show?Show the underlying commands but do not execute.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals 'command [ option ... ] file ...\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals webster> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} {(SQ <'-?'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] 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_DollarName OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [{<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Usage: execrate [ -n ] [ command [ option ... ] file ... ]'>)} ] 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: {<2>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<1>} ) ] 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: <-n> pattern: (pat.Words words:[{<-n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] 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: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (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 '!'>} {<-x>} {<'/bin/cat.exe'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [431 442] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <'/bin/cat'> more_env: [] words: [{<'/bin/cat'>} {<'/bin/cat'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [455 468] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <cat>} {<Id.Lit_Star '*'> <rm>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <chgrp>} {<Id.Lit_Star '*'> <chmod>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <cmp>} {<Id.Lit_Star '*'> <cp>} {<Id.Lit_Star '*'> <ln>} {<Id.Lit_Star '*'> <mv>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CMD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CMD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok:<shift> more_env:[] words:[{<shift>}] redirects:[] do_fork:T) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CMD)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName bins)}]) 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>} {<-x>} {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_Number 1)} {<-o>} {<-x>} {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_Number 1) <.exe>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CMD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CMD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [629 649] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CMD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CMD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName CMD) <' '> ($ Id.VSub_Number 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CMD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CMD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: {(DQ <'echo '> ($ Id.VSub_DollarName CMD))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NUM) <Id.Lit_Colon ':'> ($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CMD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CMD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName CMD) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NUM) <Id.Lit_Colon ':'> ($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] 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>} {(DQ ($ Id.VSub_DollarName f))} {<-ef>} {(DQ ($ Id.VSub_DollarName f)) <.exe>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_DollarName f) <.exe>} ) ] redirects: [] ) ] spids: [794 810] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$CMD'> more_env: [] words: [{($ Id.VSub_DollarName CMD)} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_QMark '?')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName status)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <2> pattern: (pat.Words words:[{<2> <Id.Lit_Colon ':'> <2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.exe>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (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.VSub_DollarName f))} {<-ef>} {(DQ ($ Id.VSub_DollarName f)) <.exe>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_DollarName f) <.exe>} ) ] redirects: [] ) ] spids: [888 904] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.exe>}]) middle: <Id.Right_CasePat _> action: [ (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>} {<-d>} {(DQ ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_Number 2) <'/'> ($ Id.VSub_DollarName f)} ) ] redirects: [] ) ] spids: [931 942] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {(DQ ($ Id.VSub_DollarName t))}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {($ Id.VSub_DollarName t)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName b)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <Id.VSub_DollarName '$CMD'> more_env: [] words: [ {($ Id.VSub_DollarName CMD)} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <Id.VSub_DollarName '$CMD'> more_env: [] words: [ {($ Id.VSub_DollarName CMD)} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName t)) <.exe>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$CMD'> more_env: [] words: [{($ Id.VSub_DollarName CMD)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )