(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<C>} {<language>} {<message>} {<catalog>} {<compiler>}] 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: {<msgcc>} ) ] redirects: [] ) (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<Id.Lit_VarLike '__similar__='> <30>}] redirects: [] do_fork: T ) (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: msgcc (AT&T Labs Research) 2010-10-20 $\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?msgcc - C language message catalog compiler]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals msgcc> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a C language message catalog compiler. It accepts\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) style options and arguments. A '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msgcpp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .mso> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file\n'> <Id.Char_Literals '\tis generated for each input '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .c> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file. If the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -c> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' option is not\n'> <Id.Char_Literals '\tspecified then a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gencat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) format '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .msg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file is generated from\n'> <Id.Char_Literals '\tthe input '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .mso> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .msg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -c> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is not specified then\n'> <Id.Char_Literals '\ta '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .msg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' suffix is appended to the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if it doesn'> <Id.Char_OneChar '\\\''> <Id.Char_Literals 't\n'> <Id.Char_Literals '\talready have a suffix. The default output is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals a.out.msg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -c> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tand '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are not specified.]\n'> <Id.Char_Literals '[+?If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -M-new> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is not specified then messages are merged with those in the\n' > <Id.Char_Literals '\tpre-existing '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file.]\n'> <Id.Char_Literals '[M?Set a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msgcc> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' specific '> <Id.Char_OneChar '\\a'> <Id.Char_Literals option> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals option> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be:]:[-option]{\n'> <Id.Char_Literals '\t[+mkmsgs?The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file is assumed to be in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mkmsgs> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) format.]\n'> <Id.Char_Literals '\t[+new?Create a new '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file.]\n'> <Id.Char_Literals '\t[+preserve?Messages in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -o> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file that are not in new\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .msg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file arguments are preserved. The default is to\n'> <Id.Char_Literals '\t\teither reuse the message numbers with new message text that\n' > <Id.Char_Literals '\t\tis similar to the old or to delete the message text, leaving\n' > <Id.Char_Literals '\t\tan unused message number.]\n'> <Id.Char_Literals '\t[+set='> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Set the message set number to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. The default\n'> <Id.Char_Literals '\t\tis '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+similar='> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?The message text similarity measure threshold.\n'> <Id.Char_Literals '\t\tThe similarity measure between '> <Id.Char_OneChar '\\a'> <Id.Char_Literals old> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals new> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' message\n'> <Id.Char_Literals '\t\ttext is 100*(2*gzip('> <Id.Char_OneChar '\\a'> <Id.Char_Literals old> <Id.Char_OneChar '\\a'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\a'> <Id.Char_Literals new> <Id.Char_OneChar '\\a'> <Id.Char_Literals ')/(gzip('> <Id.Char_OneChar '\\a'> <Id.Char_Literals old> <Id.Char_OneChar '\\a'> <Id.Char_Literals ')+gzip('> <Id.Char_OneChar '\\a'> <Id.Char_Literals new> <Id.Char_OneChar '\\a'> <Id.Char_Literals '))-1),\n'> <Id.Char_Literals '\t\twhere gzip('> <Id.Char_OneChar '\\a'> <Id.Char_Literals x> <Id.Char_OneChar '\\a'> <Id.Char_Literals ') is the size of text '> <Id.Char_OneChar '\\a'> <Id.Char_Literals x> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' when compressed by\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals gzip> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). The default threshold is '> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName __similar__) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '. A\n'> <Id.Char_Literals '\t\tthreshold of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' turns off message replacement, but unused\n'> <Id.Char_Literals '\t\told messages are still deleted. Use '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -M-preserve> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to preserve\n'> <Id.Char_Literals '\t\tall old messages.]\n'> <Id.Char_Literals '\t[+verbose?Trace similar message replacements on the standard error.]\n' > <Id.Char_Literals '}\n'> <Id.Char_Literals '\n'> <Id.Char_Literals 'file ...\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cpp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gencat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msggen> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals msgcpp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msgcvt> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] 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 '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 )} ) ] 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: {(DQ <'M:[-option] [ cc-options ] file ...'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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.ShFunction name_tok: <keys> name: keys body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [ {($ Id.VSub_Number 1)} {<--> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <keys>} {<-->} ] redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^".*"$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<__index__>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<__keep__>} {<__text__>} {<__drop__>} {<__oz__>} {<__nz__>} {<__z__>} {<__hit__>} {<__hit_i__>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<__compile__>} {<__debug__>} {<__mkmsgs__>} {<__preprocess__>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike '__merge__='> <1>} {<__preserve__>} {<__verbose__>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <integer> more_env: [] words: [ {<integer>} {<Id.Lit_VarLike '__i__='> <0>} {<Id.Lit_VarLike '__args__='> <0>} {<Id.Lit_VarLike '__code__='> <0>} {<Id.Lit_VarLike '__files__='> <0>} {<Id.Lit_VarLike '__max__='> <0>} {<Id.Lit_VarLike '__num__='> <0>} {<Id.Lit_VarLike '__skip__='> <0>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <integer> more_env: [] words: [ {<integer>} {<Id.Lit_VarLike '__set__='> <1>} {<Id.Lit_VarLike '__sources__='> <0>} {<Id.Lit_VarLike '__cmds__='> <0>} {<Id.Lit_VarLike '__ndrop__='> <0>} {<Id.Lit_VarLike '__new__='> <0>} {<Id.Lit_VarLike '__old__='> <0>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '__out__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__out__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__out__='> name:__out__) op: assign_op.Equal rhs: {<a.out.msg>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__OUT__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__OUT__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__OUT__='> name:__OUT__) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_Star '*') <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' --'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <' -?'>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (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: <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: [] ) ] 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_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__arg__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__arg__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__arg__='> name:__arg__) 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 __arg__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-c> pattern: (pat.Words words:[{<-c>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__compile__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__compile__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__compile__='> name: __compile__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_LBracket '['> <DIU> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__argv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__argv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__argv__['> name: __argv__ index: ($ Id.Lit_ArithVarLike __args__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __args__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-E> pattern: (pat.Words words:[{<-E>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__preprocess__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__preprocess__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__preprocess__='> name: __preprocess__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-debug> pattern: (pat.Words words:[{<-M-debug>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__debug__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__debug__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__debug__='> name:__debug__) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-mkmsgs> pattern: (pat.Words words:[{<-M-mkmsgs>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__mkmsgs__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__mkmsgs__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__mkmsgs__='> name:__mkmsgs__) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-new> pattern: (pat.Words words:[{<-M-new>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__merge__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__merge__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__merge__='> name:__merge__) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-perserve> pattern: (pat.Words words:[{<-M-perserve>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__preserve__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__preserve__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__preserve__='> name: __preserve__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-set> pattern: (pat.Words words:[{<-M-set> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__set__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__set__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__set__='> name:__set__) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <msggen> more_env: [] words: [ {<msggen>} {<-s>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __arg__> var_name: __arg__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'='>} ) right: <Id.Right_DollarBrace '}'> ) <.1> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-similar> pattern: (pat.Words words:[{<-M-similar> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__similar__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__similar__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__similar__='> name: __similar__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __arg__> var_name: __arg__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'='>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-M-verbose> pattern: (pat.Words words:[{<-M-verbose>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__verbose__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__verbose__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__verbose__='> name: __verbose__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-o> pattern: (pat.Words words:[{<-o>}]) 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: <print> more_env: [] words: [ {<print>} {<-u2>} { (DoubleQuoted left: <Id.Left_DollarDoubleQuote '$"'> parts: [ ($ Id.VSub_DollarName __command__) <': output argument expected'> ] right: <Id.Right_DoubleQuote '"'> ) } ] redirects: [] 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 '__out__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__out__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__out__='> name:__out__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <.msg> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__OUT__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__OUT__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__OUT__='> name:__OUT__) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <aAlLsS> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <cCiI> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <oO> <Id.Lit_RBracket ']'> <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 __arg__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <oO> <Id.Lit_RBracket ']'> <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.ShAssignment left: <Id.Lit_ArrayLhsOpen '__srcv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__srcv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__srcv__['> name: __srcv__ index: ($ Id.Lit_ArithVarLike __files__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __sources__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__arg__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__arg__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__arg__='> name:__arg__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __arg__> var_name: __arg__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__arg__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__arg__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__arg__='> name:__arg__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __arg__> var_name: __arg__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <.mso> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__objv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__objv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__objv__['> name: __objv__ index: ($ Id.Lit_ArithVarLike __files__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __files__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.ms> <Id.Lit_LBracket '['> <go> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__objv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__objv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__objv__['> name: __objv__ index: ($ Id.Lit_ArithVarLike __files__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __files__) ) right: <Id.Op_DRightParen _> 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_ArrayLhsOpen '__cmdv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__cmdv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__cmdv__['> name: __cmdv__ index: ($ Id.Lit_ArithVarLike __cmds__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __cmds__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] 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.ShAssignment left: <Id.Lit_VarLike '__arg__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__arg__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__arg__='> name:__arg__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __out__> var_name: __out__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__arg__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__arg__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__arg__='> name:__arg__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __arg__> var_name: __arg__ suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.msg>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_x child:{($ Id.VSub_DollarName __arg__)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__cmdv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__cmdv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__cmdv__['> name: __cmdv__ index: ($ Id.Lit_ArithVarLike __cmds__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __arg__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __cmds__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [1029 1039] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName __OUT__)}) right: (bool_expr.WordTest w:{($ Id.VSub_DollarName __compile__)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__objv__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__objv__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__objv__['> name: __objv__ index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __OUT__)} ) ] redirects: [] ) ] spids: [1064 1076] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike __sources__) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __i__) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __i__) right: ($ Id.Lit_ArithVarLike __files__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __i__) ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __srcv__> var_name: __srcv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike __sources__) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __srcv__> var_name: __srcv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) <':'> ) } ] redirects: [] do_fork: T ) ] spids: [1138 1152] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName __preprocess__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <msgcpp> more_env: [] words: [ {<msgcpp>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __argv__> var_name: __argv__ bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __srcv__> var_name: __srcv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [1170 1179] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <msgcpp> more_env: [] words: [ {<msgcpp>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __argv__> var_name: __argv__ bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __srcv__> var_name: __srcv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __objv__> var_name: __objv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1122 1136] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [1088 1097] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName __compile__)}) ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName __preprocess__)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName __merge__)}) right: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName __out__)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__tmp__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__tmp__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__tmp__='> name:__tmp__) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __out__) <.tmp>} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} {(SQ <'__code__=$?; rm -f ${__tmp__}*; exit $__code__'>)} {<0>} {<1>} {<2>} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<__line__>}] redirects: [] do_fork: T ) ] ) 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.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_DollarName __skip__)} right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName __line__)} right: {(SQ <'%}'>) <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__skip__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__skip__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__skip__='> name: __skip__ ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [1327 1343] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [1315 1325] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: {($ Id.VSub_DollarName __mkmsgs__)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName __line__)} right: {(SQ <'%{'>) <Id.Lit_Other '*'>} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__skip__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__skip__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__skip__='> name: __skip__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [1358 1378] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName __mkmsgs__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName __line__)} right: {(SQ <'%#'>) <Id.Lit_Other '*'> (SQ <';;'>) <Id.Lit_Other '*'> } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {(SQ <'%#'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {(SQ <';;'>) <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<__line__>}] redirects: [] do_fork: T ) ] spids: [1401 1421] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName __line__)} right: {<Id.Lit_Other '%'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [1451 1465] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DoubleQuoted left: <Id.Left_DollarDoubleQuote '$"'> parts: [ ($ Id.VSub_DollarName __command__) <': unrecognized line='> ($ Id.VSub_DollarName __line__) ] right: <Id.Right_DoubleQuote '"'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '__code__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__code__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__code__='> name: __code__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1390 1399] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName __line__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.ExtGlob_Plus '+('> pattern: (pat.Words words: [ { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[0-9]'>}] right: <Id.Right_ExtGlob _> ) (SQ <' '>) <Id.Lit_Star '*'> } ] ) 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {(SQ <' '>) <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> (SQ <'"'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {(SQ <'"'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__index__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__index__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__index__['> name: __index__ index: {(DQ ($ Id.VSub_DollarName __line__))} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __num__)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__text__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__text__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__text__['> name: __text__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __line__)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [1579 1593] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName __out__)} ) ] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __new__) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike __max__) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [1269 1284] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike '__tmp__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__tmp__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__tmp__='> name:__tmp__) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __out__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __new__) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike __code__) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName __code__)} ) ] spids: [1646 1656] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '1>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName __tmp__)} ) (Redir op:<Id.Redir_GreatAnd '9>&'> loc:(redir_loc.Fd fd:9) arg:{<1>}) ] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(SQ <'$'>) (DQ <' '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __out__> var_name: __out__ suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.msg>}) right: <Id.Right_DollarBrace '}'> ) <' message catalog'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(SQ <'$translation'>) (DQ <' '> ($ Id.VSub_DollarName __command__) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <Y-> <Id.Lit_Other '%'> <m-> <Id.Lit_Other '%'> <d> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<-->} {(SQ <'$set'>) (DQ <' '> ($ Id.VSub_DollarName __set__))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<-->} {(SQ <'$quote "'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-u>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __objv__> var_name: __objv__ bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '__raw__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__raw__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__raw__='> name:__raw__) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<__line__>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike '__op__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__op__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__op__='> name:__op__) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName __op__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cmd> pattern: (pat.Words words:[{<cmd>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__a1__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a1__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a1__='> name: __a1__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName __a1__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <dot_cmd> pattern: (pat.Words words:[{<dot_cmd>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__a1__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a1__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a1__='> name: __a1__ ) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <keys> more_env: [] words: [{<keys>} {($ Id.VSub_DollarName __a1__)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <def> pattern: (pat.Words words:[{<def>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__a1__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a1__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a1__='> name: __a1__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__a2__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a2__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a2__='> name: __a2__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName __a1__) <Id.Lit_Equals '='> (SQ <'$'>) <__a2__> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <str> pattern: (pat.Words words:[{<str>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(DQ ($ Id.VSub_DollarName __line__))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <raw> pattern: (pat.Words words:[{<raw>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__raw__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__raw__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__raw__='> name: __raw__ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __raw__) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName __line__) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.KW_Var var> pattern: (pat.Words words:[{<Id.KW_Var var>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__a1__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a1__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a1__='> name: __a1__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__a2__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__a2__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__a2__='> name: __a2__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName __a1__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.KW_DLeftBracket '[['> pattern: (pat.Words words: [ {<Id.KW_DLeftBracket '[['> <Id.Lit_Colon ':'> <digit> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '__v__='> (SQ <'$'>) ($ Id.VSub_DollarName __a2__) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '__v__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__v__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__v__='> name: __v__ ) op: assign_op.Equal rhs: {(SQ <'"'>) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __v__> var_name: __v__ suffix_op: (suffix_op.Slice begin: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike __a1__) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Arith_RBrace _> ) } ) ] 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: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '__v__='> (SQ <'$'>) ($ Id.VSub_DollarName __a1__) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName __v__)} right: {(SQ <'"'>) <Id.Lit_Other '*'> (SQ <'"'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(DQ ($ Id.VSub_DollarName __v__))} ] redirects: [] do_fork: T ) ] spids: [1990 2009] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.KW_DLeftBracket '[['> pattern: (pat.Words words: [ {<Id.KW_DLeftBracket '[['> <Id.Lit_Colon ':'> <digit> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName __preserve__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(DQ ($ Id.VSub_DollarName __line__))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'$'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u9>} {($ Id.VSub_DollarName __op__)} {<include>} {($ Id.VSub_DollarName __line__)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __i__) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __i__) right: ($ Id.Lit_ArithVarLike __cmds__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __i__) ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <keys> more_env: [] words: [ {<keys>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __cmdv__> var_name: __cmdv__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName __raw__)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __raw__> var_name: __raw__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '?'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s/^"//'>)} {<-e>} {(SQ <'s/"$//'>)} {<-e>} {(SQ <'s/\\\\/&&/g'>)} {<-e>} {(SQ <'s/"/\\\\"/g'>)} {<-e>} {(SQ <'s/.*/$RAW$"&"/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (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: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<__line__>}] 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 __line__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'$RAW$'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'$'>) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {(DQ ($ Id.VSub_DollarName __line__))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'$'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <'@(#)'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <'<'>) (word_part.ExtGlob op: <Id.ExtGlob_Star '*('> arms: [{<'[[:word:] .-]'>}] right: <Id.Right_ExtGlob _> ) (DQ <'@'>) (word_part.ExtGlob op: <Id.ExtGlob_Star '*('> arms: [{<'[[:word:] .-]'>}] right: <Id.Right_ExtGlob _> ) (DQ <'>'>) (word_part.ExtGlob op:<Id.ExtGlob_Star '*('> arms:[{<'[ \t]'>}] right:<Id.Right_ExtGlob _>) (SQ <'"'>) } {(DQ <'http://'>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.KW_DLeftBracket '[['> <Id.Lit_Colon ':'> <alpha> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'> <Id.KW_DLeftBracket '[['> <Id.Lit_Colon ':'> <alpha> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'> <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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> (SQ <'"'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__line__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__line__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__line__='> name: __line__ ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __line__> var_name: __line__ suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {(SQ <'"'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName __line__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __index__> var_name: __index__ bracket_op: (bracket_op.ArrayIndex expr: { (DQ ($ Id.VSub_DollarName __line__) ) } ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: { ($ Id.VSub_DollarName __preserve__ ) } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __index__> var_name: __index__ bracket_op: (bracket_op.ArrayIndex expr: { (DQ ($ Id.VSub_DollarName __line__ ) ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__keep__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__keep__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__keep__['> name: __keep__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [2376 2387] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2358 2374] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [2441 2455] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName __preserve__)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__keep__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__keep__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__keep__['> name: __keep__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [2470 2481] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__text__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__text__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__text__['> name: __text__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __line__)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__index__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__index__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__index__['> name: __index__ index: {(DQ ($ Id.VSub_DollarName __line__))} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __num__)} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2347 2356] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __num__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [2532 2546] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName __debug__)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __num__) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __max__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __new__) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: { (BracedVarSub left: < Id.Left_DollarBrace '${' > token: <Id.VSub_Name __keep__ > var_name: __keep__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: < Id.Right_DollarBrace '}' > ) } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {<-->} {($ Id.VSub_DollarName __num__)} {<HUH>} {(SQ <'"'>) (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: <Id.Right_DollarBrace '}'> ) ) (SQ <'"'>) } ] redirects: [] do_fork: T ) ] spids: [2627 2643] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {<-->} {($ Id.VSub_DollarName __num__)} {<NEW>} {(SQ <'"'>) (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: <Id.Right_DollarBrace '}'> ) ) (SQ <'"'>) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2611 2625] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __keep__> var_name: __keep__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {<-->} {($ Id.VSub_DollarName __num__)} {<OLD>} {(SQ <'"'>) (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) ) (SQ <'"'>) } ] redirects: [] do_fork: T ) ] spids: [2706 2720] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {<-->} {($ Id.VSub_DollarName __num__)} {<XXX>} {(SQ <'"'>) (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) ) (SQ <'"'>) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2595 2609] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [2561 2570] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName __preserve__)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __num__) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __new__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__) } ) right: <Id.Right_DollarBrace '}'> ) } ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __keep__> var_name: __keep__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __ndrop__) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__drop__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__drop__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__drop__['> name: __drop__ index: ($ Id.Lit_ArithVarLike __ndrop__) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName __num__)} ) ] redirects: [] ) ] spids: [2837 2862] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName __verbose__)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {($ Id.VSub_DollarName __command__) <Id.Lit_Colon ':'>} {<old> <Id.Lit_Colon ':'> <1-> (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike __new__) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } {<new> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName __new__) <-> ($ Id.VSub_DollarName __max__) } {<drop>} {($ Id.VSub_DollarName __ndrop__)} {<add>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike __max__) right: ($ Id.Lit_ArithVarLike __new__) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike __ndrop__) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __i__) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __i__) right: ($ Id.Lit_ArithVarLike __ndrop__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __i__) ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __old__) right: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __drop__> var_name: __drop__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __i__)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__oz__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__oz__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__oz__['> name: __oz__ index: ($ Id.Lit_ArithVarLike __i__) ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __old__ ) } ) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __new__) ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __max__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike '__nz__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__nz__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__nz__='> name: __nz__ ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '__hit__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__hit__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__hit__='> name: __hit__ ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __bz__) right: ($ Id.Lit_ArithVarLike __similar__) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __i__) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __i__) right: ($ Id.Lit_ArithVarLike __ndrop__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __i__) ) 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __old__ ) right: { (BracedVarSub left: <Id.Left_DollarBrace '${' > token: <Id.VSub_Name __drop__> var_name: __drop__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __i__ ) } ) right: <Id.Right_DollarBrace '}' > ) } ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__z__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__z__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__z__='> name: __z__ ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} { (DQ (word_part.EscapedLiteral token: < Id.Lit_EscapedChar '\\"' > ch: '"' ) (BracedVarSub left: < Id.Left_DollarBrace '${' > token: < Id.VSub_Name __text__ > var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __old__ ) } ) right: < Id.Right_DollarBrace '}' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) (DQ (word_part.EscapedLiteral token: < Id.Lit_EscapedChar '\\"' > ch: '"' ) (BracedVarSub left: < Id.Left_DollarBrace '${' > token: < Id.VSub_Name __text__ > var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__ ) } ) right: < Id.Right_DollarBrace '}' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> <Id.Op_Pipe _> ] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __z__) right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Star left: ($ Id.Lit_ArithVarLike __z__ ) right: {<Id.Lit_Digits 200>} ) right: (arith_expr.Binary op_id: Id.Arith_Plus left: { (BracedVarSub left: < Id.Left_DollarBrace '${' > token: <Id.VSub_Name __oz__ > var_name: __oz__ bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike __i__ ) ) right: < Id.Right_DollarBrace '}' > ) } right: { ($ Id.VSub_DollarName __nz__ ) } ) ) right: {<Id.Lit_Digits 100>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike __z__ ) right: ($ Id.Lit_ArithVarLike __bz__ ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __bz__ ) right: ($ Id.Lit_ArithVarLike __z__ ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __hit__ ) right: ($ Id.Lit_ArithVarLike __old__ ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __hit_i__ ) right: ($ Id.Lit_ArithVarLike __i__ ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [3226 3240] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [3129 3146] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike __hit__) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName __verbose__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {($ Id.VSub_DollarName __command__) <Id.Lit_Colon ':'> } {($ Id.VSub_DollarName __hit__)} {($ Id.VSub_DollarName __num__)} {($ Id.VSub_DollarName __bz__)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__text__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__text__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__text__['> name: __text__ index: {($ Id.VSub_DollarName __hit__)} ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName __num__) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__keep__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__keep__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__keep__['> name: __keep__ index: {($ Id.VSub_DollarName __hit__)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__drop__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__drop__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__drop__['> name: __drop__ index: {($ Id.VSub_DollarName __hit_i__)} ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__text__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__text__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__text__['> name: __text__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '__keep__['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '__keep__['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '__keep__['> name: __keep__ index: {($ Id.VSub_DollarName __num__)} ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [3281 3291] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [2934 2944] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2801 2812] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike __num__) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike __num__) right: ($ Id.Lit_ArithVarLike __max__) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike __num__) ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: (bool_expr.LogicalOr left: (bool_expr.WordTest w: {($ Id.VSub_DollarName __preserve__)} ) right: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __keep__> var_name: __keep__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} {($ Id.VSub_DollarName __num__)} { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name __text__> var_name: __text__ bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName __num__)} ) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) ] spids: [3397 3428] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName __tmp__)} right: {($ Id.VSub_DollarName __out__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-v>} {(SQ <'^\\$'>)} {($ Id.VSub_DollarName __tmp__)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name __tmp__) <n>} ) ] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName __out__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-v>} {(SQ <'^\\$'>)} {($ Id.VSub_DollarName __out__)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name __tmp__) <o>} ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {(${ Id.VSub_Name __tmp__) <n>} {(${ Id.VSub_Name __tmp__) <o>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName __out__)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName __out__)} {($ Id.VSub_DollarName __out__) <.old>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName __tmp__)} {($ Id.VSub_DollarName __out__)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [3459 3472] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1251 1267] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName __code__)} ) ] )