(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<make>} {<abstract>} {<machine>} {<executor>} {<with>} {<state>}] 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: {<mamexec>} ) ] 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: mamexec (AT&T Labs Research) 1994-04-17 $\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?mamexec - make abstract machine executor]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' reads MAM (Make Abstract Machine) target and\n'> <Id.Char_Literals '\tprerequisite file descriptions from the standard input and executes\n' > <Id.Char_Literals '\tactions to update targets that are older than their prerequisites.\n' > <Id.Char_Literals '\tMamfiles are generated by the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --mam> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' option of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals gmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and are portable to environments that only have\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[+?A separate '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamstate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) program is used to compare current and state\n'> <Id.Char_Literals '\tfile target times. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) script implementation\n'> <Id.Char_Literals '\tthat has been replaced by the standalone '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). New\n'> <Id.Char_Literals '\tapplications should use '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[d:debug?Set the debug trace level to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals level> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Higher levels produce\n'> <Id.Char_Literals '\tmore output.]\n'> <Id.Char_Literals '[f:force?Force all targets to be out of date.]\n'> <Id.Char_Literals '[i:ignore?Ignore shell action errors.]\n'> <Id.Char_Literals '[n!:exec?Enable shell action execution.]\n'> <Id.Char_Literals '[s:silent?Do not trace shell actions as they are executed.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals '[ target ... ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamstate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <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 <dfins>)} ) ] 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.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: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_diff_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_diff_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_diff_='> name:_diff_) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_error_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_error_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_error_='> name:_error_) op: assign_op.Equal rhs: {(SQ <'exit 1'>)} ) ] redirects: [] ) (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: {<eval>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_force_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_force_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_force_='> name:_force_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_list_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_list_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_list_='> name:_list_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_same_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_same_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (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: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_silent_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_silent_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_silent_='> name:_silent_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_state_list_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_state_list_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_state_list_='> name:_state_list_) op: assign_op.Equal rhs: {<MAMlist>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_state_time_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_state_time_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_state_time_='> name:_state_time_) op: assign_op.Equal rhs: {<MAMtime>} ) ] redirects: [] ) (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: {<'/tmp/mam.'> ($ Id.VSub_Dollar '$') <.mam>} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'rm -f $_tmp_'>)} {<0>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'exit 2'>)} {<1>} {<2>}] redirects: [] do_fork: T ) (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: <d> pattern: (pat.Words words:[{<d>}]) 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: {($ Id.VSub_DollarName OPT)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_force_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_force_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_force_='> name:_force_) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_error_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_error_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_error_='> name:_error_) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (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: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_silent_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_silent_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_silent_='> name:_silent_) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.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.ShAssignment left: <Id.Lit_VarLike '_select_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_select_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_select_='> name:_select_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_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.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 '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_Number 1)}] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _select_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_select_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_select_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_select_='> name: _select_ ) op: assign_op.Equal rhs: {($ 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.ShAssignment left: <Id.Lit_VarLike '_select_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_select_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_select_='> name: _select_ ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName _select_) <'|'> ($ Id.VSub_Number 1))} ) ] 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: <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 _select_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_select_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_select_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_select_='> name:_select_) op: assign_op.Equal rhs: {(DQ <'*'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-e>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.AndOr children: [ (command.Simple blame_tok: <false> more_env: [] words: [{<false>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (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: {<e>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _command_) <Id.Lit_Colon ':'>} {<command>} {<errors>} {<ignored>} {<because>} {<of>} {<shell>} {<botch>} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _silent_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) 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: {<x> ($ Id.VSub_DollarName _set_)} ) ] 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: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <echo>)}]) 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: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 _exec_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <eval>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_begin_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_begin_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_begin_='> name:_begin_) op: assign_op.Equal rhs: {(DQ <'('>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_end_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_end_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_end_='> name:_end_) op: assign_op.Equal rhs: {(DQ <') </dev/null'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _set_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <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: {(DQ <'set -'> ($ Id.VSub_DollarName _set_) <';'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '_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: (rhs_word__Empty) ) ] redirects: [] ) ] 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.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName _state_list_)} {<-a>} {<-f>} {($ Id.VSub_DollarName _state_time_)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <mamstate> more_env: [] words: [{<mamstate>} {($ Id.VSub_DollarName _state_list_)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName _state_list_)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName _tmp_)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_i_] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-12>} {($ Id.VSub_DollarName _state_time_)} {($ Id.VSub_DollarName _tmp_)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/ .*//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) 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 _same_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_same_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_same_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _i_)} ) ] 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 '_same_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_same_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _same_) <'|'> ($ Id.VSub_DollarName _i_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [665 679] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_index_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_index_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_index_='> name:_index_) op: assign_op.Equal rhs: {<Id.Lit_Underscore _>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_match_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_match_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_match_='> name:_match_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<ok>}] redirects: [] do_fork: T ) (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<a>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Right_Subshell _> redirects: [] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ok> pattern: (pat.Words words:[{<ok>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_read_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_read_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_read_='> name:_read_) op: assign_op.Equal rhs: {(SQ <'read -r'>)} ) ] 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 '_read_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_read_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_read_='> name:_read_) op: assign_op.Equal rhs: {<read>} ) ] redirects: [] ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/\\\\/\\\\\\\\/g'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName _tmp_)} ) ] do_fork: T ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName _tmp_)} ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName _tmp_)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_old_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_old_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_old_='> name:_old_) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_ifs_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_ifs_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ifs_='> name:_ifs_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName IFS)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <' '>)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <Id.VSub_DollarName '$_read_'> more_env: [] words: [{($ Id.VSub_DollarName _read_)} {<_op_>} {<_arg_>} {<_val_>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _ifs_)} ) ] redirects: [] ) (command.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: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <note>)}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <info>)}]) 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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <mam>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_old_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_old_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_old_='> name:_old_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <setv>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_data_='> (SQ <'$'>) ($ Id.VSub_DollarName _arg_)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _index_) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName _data_) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <__> pattern: (pat.Words words: [ {<__> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'>} ] ) 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: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <eval>)}]) 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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName _arg_) <'='> ($ Id.VSub_DollarName _val_) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName _arg_) <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName _val_)) } {(DQ <'</dev/null'>)} ] 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 _arg_) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName mam_cc_L) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'CC:'>)}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'main(){return 0;}'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<main.c>} ) ] 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: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {<-c>} {<main.c>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) 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.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {<-L.>} {<main.o>} {<-lc>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {<-L.>} {<main.o>} {<-lc>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<libc.a>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] 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: {<0>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [1080 1094] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1066 1078] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'/tmp'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] ) (command.ShAssignment left: <Id.Lit_VarLike 'mam_cc_L='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mam_cc_L='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mam_cc_L='> name: mam_cc_L ) op: assign_op.Equal rhs: {(SQ <' '>)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <make>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_name_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _name_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_prev_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _prev_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_cmds_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> (SQ <'"$_cmds_"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_attr_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _attr_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike '_name_='> ($ Id.VSub_DollarName _arg_)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_prev_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_prev_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_prev_='> name:_prev_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _index_)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName _val_) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' metarule '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_attr_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_attr_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_) op: assign_op.Equal rhs: {<m> ($ Id.VSub_DollarName _attr_)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_cmds_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_cmds_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName _name_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' in\n'> <'\t\t\t'> ($ Id.VSub_DollarName _select_) <')\n'> <'\t\t\t\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName _select_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' in\n'> <'\t\t\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'*'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <')\t_select_='> ($ Id.VSub_DollarName _name_) <' ;;\n'> <'\t\t\t\tesac\n'> <'\t\t\t\t_match_=1\n'> <'\t\t\t\t_attr_=x'> ($ Id.VSub_DollarName _attr_) <'\n'> <'\t\t\t\t;;\n'> <'\t\t\tesac'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _force_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName _name_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' in\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _diff_) <')_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _same_) <');;\n'> <'\t\t\t\t*)\t_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> <'\t\t\t\tesac'> ) } ] 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.ShAssignment left: <Id.Lit_VarLike '_attr_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_attr_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_) op: assign_op.Equal rhs: {<u> ($ Id.VSub_DollarName _attr_)} ) ] 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 _attr_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <u> <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 _diff_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_diff_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_diff_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_diff_='> name: _diff_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _name_)} ) ] 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 '_diff_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_diff_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_diff_='> name: _diff_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _diff_) <'|'> ($ Id.VSub_DollarName _name_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_index_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_index_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_index_='> name:_index_) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> ($ Id.VSub_DollarName _index_)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_name_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _name_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_prev_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _prev_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_cmds_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _cmds_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_attr_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> ($ Id.VSub_DollarName _attr_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_list_='> (SQ <'"'>) (DQ ($ Id.VSub_DollarName _list_)) (SQ <'\n'>) ($ Id.VSub_DollarName _name_) (SQ <'"'>) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <prev>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _force_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName _arg_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' in\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _diff_) <')_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _same_) <')\t;;\n'> <'\t\t\t\t*)\t_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> <'\t\t\t\tesac'> ) } ] 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.ShAssignment left: <Id.Lit_VarLike '_attr_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_attr_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_) op: assign_op.Equal rhs: {<u> ($ Id.VSub_DollarName _attr_)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] 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 _index_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Underscore _> pattern: (pat.Words words:[{<Id.Lit_Underscore _>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _op_) <Id.Lit_Colon ':'>} {<missing>} {<make>} {<op>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] 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 _op_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <attr>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _val_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <meta>)} {(DQ <suff>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_attr_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_attr_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_) op: assign_op.Equal rhs: {<m> ($ Id.VSub_DollarName _attr_)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <exec>)} {(DQ <....>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _old_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (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_DollarName _val_)} ) ] 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 _val_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (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: { (DQ ($ Id.VSub_DollarName _arg_) <' '> ($ Id.VSub_DollarName _val_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 _cmds_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_cmds_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_cmds_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _arg_)} ) ] 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 '_cmds_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_cmds_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _cmds_) <'\n'> ($ Id.VSub_DollarName _arg_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <done>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike '_arg_='> ($ Id.VSub_DollarName _arg_)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_prop_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_prop_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_prop_='> name:_prop_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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: <Id.VSub_DollarName '$_name_'> pattern: (pat.Words words:[{($ Id.VSub_DollarName _name_)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _attr_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <m> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <x> <Id.Lit_Star '*'> <u> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <u> <Id.Lit_Star '*'> <x> <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 _cmds_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _attr_)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <u> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_prop_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_prop_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_prop_='> name: _prop_ ) op: assign_op.Equal rhs: {<u>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$_exec_'> more_env: [] words: [ {($ Id.VSub_DollarName _exec_)} { (DQ ($ Id.VSub_DollarName _begin_) ($ Id.VSub_DollarName _set_) ($ Id.VSub_DollarName _cmds_) ($ Id.VSub_DollarName _end_) ) } ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (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: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _set_)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <e> <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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _cmds_)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.KW_If if> <Id.Lit_Star '*'> <Id.KW_Then then> <Id.Lit_Star '*'> <Id.KW_Fi fi> <Id.Lit_Star '*'> } {(DQ <'||'>)} ] ) middle: <Id.Right_CasePat _> action: [ (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: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 _code_)} ) 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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** exit code '> ($ Id.VSub_DollarName _code_) <' making '> ($ Id.VSub_DollarName _name_) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$_error_'> more_env: [] words: [{($ Id.VSub_DollarName _error_)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike '_prop_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_prop_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_prop_='> name: _prop_ ) op: assign_op.Equal rhs: {<u>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_index_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_index_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_index_='> name: _index_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _prev_)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_name_='> (SQ <'$'>) <_name_> ($ Id.VSub_DollarName _index_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_prev_='> (SQ <'$'>) <_prev_> ($ Id.VSub_DollarName _index_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_cmds_='> (SQ <'$'>) <_cmds_> ($ Id.VSub_DollarName _index_) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_attr_='> ($ Id.VSub_DollarName _prop_) (SQ <'$'>) <_attr_> ($ Id.VSub_DollarName _index_) } ] 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: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _val_) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName _op_)} {($ Id.VSub_DollarName _name_)} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _ifs_)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _match_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName _command_) <': don\'t know how to make '> ($ Id.VSub_DollarName _select_) ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <Id.VSub_DollarName '$_error_'> more_env: [] words: [{($ Id.VSub_DollarName _error_)}] 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 _exec_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <eval>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName _list_))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName _state_list_)} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <mamstate> more_env: [] words: [{<mamstate>} {($ Id.VSub_DollarName _state_list_)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName _state_list_)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName _state_time_)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] )