(command.CommandList children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Hyphen -) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName BASH_VERSION)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <x> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<bash>} {<set>} {<-x>} {<is>} {<broken>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <ex>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: {<iffe>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'version='> name:version) op: assign_op.Equal rhs: {<2012-07-17>} ) ] redirects: [] ) (command.ShFunction name_tok: <compile> name: compile body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName tmp) <.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_compile_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_compile_status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_compile_status='> name: _compile_status ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] 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>} {<-s>} {($ Id.VSub_DollarName tmp) <.err>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp) <.err>}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _compile_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <1-9> <Id.Lit_RBracket ']'>} {<Id.Lit_LBracket '['> <1-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } {<1> <Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } {<12> <Id.Lit_LBracket '['> <0-7> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} {<-i>} {<-c>} { (SQ < 'terminated with signal|core dump|segmentation fault' > ) } {($ Id.VSub_DollarName tmp) <.err>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_compile_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_compile_status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_compile_status='> name: _compile_status ) op: assign_op.Equal rhs: {<139>} ) ] redirects: [] ) ] spids: [209 228] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [155 165] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _compile_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<1> <Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'> <Id.Lit_QMark '?'>} {<12> <Id.Lit_LBracket '['> <0-8> <Id.Lit_RBracket ']'>} {<25> <Id.Lit_QMark '?'>} ] ) 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 command) <': '> ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp) <.err>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_Number 1) <': core dump or fatal interruption -- results inconclusive'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName _compile_status)} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName _compile_status)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <is_hdr> name: is_hdr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike '_is_hdr_flag='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_flag='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_is_hdr_flag='> name: _is_hdr_flag ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 '_is_hdr_flag='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_flag='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_is_hdr_flag='> name: _is_hdr_flag ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.c>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike '_is_hdr_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_is_hdr_file='> name: _is_hdr_file ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 '_is_hdr_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_is_hdr_file='> name: _is_hdr_file ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName tmp) <.c>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<hdr>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName _is_hdr_file)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName tmp) <.e>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_is_hdr_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_is_hdr_status='> name:_is_hdr_status) 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 _is_hdr_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {($ Id.VSub_DollarName tmp) <.e>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {(SQ <'#.*error'>)} {($ Id.VSub_DollarName tmp) <.e>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) 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 '_is_hdr_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_is_hdr_status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_is_hdr_status='> name: _is_hdr_status ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [445 455] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _is_hdr_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {($ Id.VSub_DollarName _is_hdr_flag)}] 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 debug)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <3> pattern: (pat.Words words:[{<3>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp) <.e>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {($ Id.VSub_DollarName _is_hdr_flag)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName _is_hdr_status)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <pkg> name: pkg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <getconf> more_env: [] words: [{<getconf>} {<PATH>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName pth)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: {(DQ <'/bin /usr/bin'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName pth))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/:/ /g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'<'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] 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: <X> pattern: (pat.Words words:[{<X>} {<X11> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ <openwin>)} ) ] 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: <X> pattern: (pat.Words words:[{<X>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<X11>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <X11> pattern: (pat.Words words:[{<X11>}]) 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: <set> more_env: [] words: [{<set>} {($ Id.VSub_Number 1)} {<6>} {<5>} {<4>}] redirects: [] 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.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 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: { (DQ <'{ usr . - . contrib local '> ($ Id.VSub_DollarName i) <' - . share - . lib - '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_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.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'>'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> (${ Id.VSub_Name i) <R> ($ Id.VSub_Number 1) <' '> (${ Id.VSub_Name i) <.> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName pth) <' . } '> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <is> name: is body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName verbose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName complete)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'oo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'oo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'oo='> name:oo) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) 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 'yy='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yy='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yy='> name:yy) op: assign_op.Equal rhs: {<is>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ii='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ii='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ii='> name:ii) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'complete='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'complete='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'complete='> name: complete ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName oo)}) 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 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a command'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dat> pattern: (pat.Words words:[{<dat>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a library data symbol'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dfn> pattern: (pat.Words words:[{<dfn>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a macro with extractable value'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <exp> pattern: (pat.Words words:[{<exp>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <true>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hdr> pattern: (pat.Words words:[{<hdr>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a header'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <id> pattern: (pat.Words words:[{<id>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'an identifier'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <lcl> pattern: (pat.Words words:[{<lcl>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a native header'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <key> pattern: (pat.Words words:[{<key>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a reserved keyword'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <lib> pattern: (pat.Words words:[{<lib>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a library function'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <LIB> pattern: (pat.Words words:[{<LIB>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) 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 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mm='> name: mm ) op: assign_op.Equal rhs: {(DQ <'a library'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'ii='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ii='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ii='> name: ii ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mm='> name: mm ) op: assign_op.Equal rhs: {(DQ <'a library group'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mac> pattern: (pat.Words words:[{<mac>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a macro'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mem> pattern: (pat.Words words:[{<mem>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a member of '> ($ Id.VSub_Number 2))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mth> pattern: (pat.Words words:[{<mth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a math library symbol'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nos> pattern: (pat.Words words:[{<nos>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a non-opaque struct'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <npt> pattern: (pat.Words words:[{<npt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a symbol that needs a prototype'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <num> pattern: (pat.Words words:[{<num>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a numeric constant or enum'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nxt> pattern: (pat.Words words:[{<nxt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'an include path for the native header'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <opt> pattern: (pat.Words words:[{<opt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: { (DQ <'set in '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <PACKAGE_OPTIONS> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a file'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <run> pattern: (pat.Words words:[{<run>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'yy='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yy='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yy='> name:yy) op: assign_op.Equal rhs: {(DQ <'capture output of'>)} ) (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <siz> pattern: (pat.Words words:[{<siz>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a type with known size'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sym> pattern: (pat.Words words:[{<sym>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a typed variable'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sys> pattern: (pat.Words words:[{<sys>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a system header'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <typ> pattern: (pat.Words words:[{<typ>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'a type or typedef'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <val> pattern: (pat.Words words:[{<val>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'yy='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yy='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yy='> name:yy) op: assign_op.Equal rhs: {(DQ <determine>)} ) (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <value>)} ) ] 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 'yy='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yy='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yy='> name:yy) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 ii)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> (SQ <'{'>) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ii='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ii='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ii='> name:ii) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ii) <' ... }end'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {(DQ ($ Id.VSub_DollarName command) <': test:'>)} {($ Id.VSub_DollarName yy)} {($ Id.VSub_DollarName ii)} {($ Id.VSub_DollarName mm)} {(DQ <...> ($ Id.VSub_DollarName SHOW))} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'complete='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'complete='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'complete='> name: complete ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <success> name: success body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 result)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <UNKNOWN> pattern: (pat.Words words:[{<UNKNOWN>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {<SUCCESS>} ) ] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] 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 complete) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName verbose)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName suspended)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'suspended='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suspended='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'suspended='> name: suspended ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {(DQ ($ Id.VSub_DollarName command) <': test:'>)} {($ Id.VSub_DollarName yy)} {($ Id.VSub_DollarName ii)} {($ Id.VSub_DollarName mm)} {(DQ <...> ($ Id.VSub_DollarName SHOW))} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'complete='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'complete='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'complete='> name:complete) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <yes>)} ) ] 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 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <'\''> ($ Id.VSub_Star '*') <'\''>)} ) ] 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 debug)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' '> ($ Id.VSub_DollarName mm))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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>} { (DQ ($ Id.VSub_DollarName command) <': ... '> ($ Id.VSub_DollarName mm) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <failure> name: failure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {<FAILURE>} ) ] 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_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] 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 complete) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName verbose)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName suspended)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'suspended='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suspended='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'suspended='> name: suspended ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {(DQ ($ Id.VSub_DollarName command) <': test:'>)} {($ Id.VSub_DollarName yy)} {($ Id.VSub_DollarName ii)} {($ Id.VSub_DollarName mm)} {(DQ <...> ($ Id.VSub_DollarName SHOW))} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'complete='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'complete='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'complete='> name:complete) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) 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: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {(DQ <no>)} ) ] 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 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] 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 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 debug)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' '> ($ Id.VSub_DollarName mm))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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>} { (DQ ($ Id.VSub_DollarName command) <': ... '> ($ Id.VSub_DollarName mm) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <report> name: report body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_report_ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_ignore='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_ignore='> name: _report_ignore ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 '_report_ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_ignore='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_ignore='> name: _report_ignore ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_not='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_not='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_report_not='> name:_report_not) op: assign_op.Equal rhs: {($ Id.VSub_DollarName not)} ) ] 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: <-0> pattern: (pat.Words words:[{<-0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-1> pattern: (pat.Words words:[{<-1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName def)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_not)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_report_not='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_not='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_not='> name: _report_not ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 '_report_not='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_not='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_not='> name: _report_not ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_report_status='> name:_report_status) 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 _report_ignore) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName _report_status) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Colon ':'> <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_Colon ':'> <0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {($ Id.VSub_DollarName _report_ignore)}] 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: <failure> more_env: [] words: [{<failure>} {($ Id.VSub_DollarName _report_ignore)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName group)}) 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.ControlFlow keyword:<Id.ControlFlow_Return return>)] 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 '_report_value='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_value='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_report_value='> name:_report_value) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_not)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_report_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_status='> name: _report_status ) 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.ShAssignment left: <Id.Lit_VarLike '_report_status='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_status='> name: _report_status ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_success='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_success='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_success='> name: _report_success ) op: assign_op.Equal rhs: {($ Id.VSub_Number 4)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_failure='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_failure='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_failure='> name: _report_failure ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] 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 '_report_success='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_success='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_success='> name: _report_success ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_failure='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_failure='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_failure='> name: _report_failure ) op: assign_op.Equal rhs: {($ Id.VSub_Number 4)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_report_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_report_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_report_default='> name: _report_default ) op: assign_op.Equal rhs: {($ Id.VSub_Number 5)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_status)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName M)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' '> ($ Id.VSub_DollarName _report_value) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_success)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<->}]) 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 define)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <'\t'> ($ Id.VSub_DollarName _report_value) <'\t/* '> ($ Id.VSub_DollarName _report_success) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName m) <'='> ($ Id.VSub_DollarName _report_value) ) } ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName m) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) ($ Id.VSub_DollarName _report_value) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) } ] redirects: [] do_fork: T ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName M)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_failure)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<->}]) 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 define) ($ Id.VSub_DollarName all) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'>} {<1> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m) <'\t\t/* '> ($ Id.VSub_DollarName _report_failure) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <11> pattern: (pat.Words words: [{<11> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <'\t0\t/* '> ($ Id.VSub_DollarName _report_failure) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n1> pattern: (pat.Words words:[{<n1> <Id.Lit_QMark '?'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName m) <'='>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n1> pattern: (pat.Words words: [{<n1> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName m) <'=0'>)}] redirects: [] 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: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _report_default)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<->}]) 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 define) ($ Id.VSub_DollarName set)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName v) <'\t'> ($ Id.VSub_DollarName set) <'\t/* '> ($ Id.VSub_DollarName _report_default) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words: [{<n> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName v) <'='> ($ Id.VSub_DollarName set) ) } ] redirects: [] 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: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName m) <Id.Lit_Equals '='> <0>}] redirects: [] 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: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <noisy> name: noisy body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName complete) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName verbose)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'suspended='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suspended='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suspended='> name:suspended) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'here_broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'here_broken='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'here_broken='> name:here_broken) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShFunction name_tok: <literal> name: literal body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [($ Id.VSub_Star '*') <'\n'>] ) ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<old>} {<here>} {<doc>} {<botch>} {<not>} {<present>}] redirects: [] do_fork: T ) ] spids: [2481 2493] ) ] 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 here_broken)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'here_broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'here_broken='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'here_broken='> name: here_broken ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) < ': your shell botches here documents; this was fixed back in the 80\'s' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <sh> more_env: [] words: [{<sh>} {<-c>} {(DQ <'cat <<!\n'> ($ Id.VSub_Star '*') <'\n'> <'!\n'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <copy> name: copy body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<->} {(DQ ($ Id.VSub_Number 2))}] 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.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [($ Id.VSub_Number 2) <'\n'>] ) ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<ancient>} {<here>} {<doc>} {<botch>} {<not>} {<present>} ] redirects: [] do_fork: T ) ] spids: [2607 2619] ) ] 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 here_broken)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'here_broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'here_broken='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'here_broken='> name: here_broken ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) < ': your shell botches here documents; this was fixed back in the 80\'s' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <sh> more_env: [] words: [ {<sh>} {<-c>} {(DQ <'cat <<!\n'> ($ Id.VSub_Number 2) <'\n'> <'!\n'>)} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<->} {(DQ ($ Id.VSub_Number 2))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1))} ) ] 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.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1))} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [($ Id.VSub_Number 2) <'\n'>] ) ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<ancient>} {<here>} {<doc>} {<botch>} {<not>} {<present>} ] redirects: [] do_fork: T ) ] spids: [2729 2747] ) ] 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 here_broken)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'here_broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'here_broken='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'here_broken='> name: here_broken ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) < ': your shell botches here documents; this was fixed back in the 80\'s' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <sh> more_env: [] words: [ {<sh>} {<-c>} { (DQ <'cat > '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' <<!\n'> ($ Id.VSub_Number 2) <'\n'> <'!\n'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <checkcc> name: checkcc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PACKAGE_PATH)}) 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.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: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName PACKAGE_PATH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,:, ,g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName i) <'/include'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cc) <' -I'> ($ Id.VSub_DollarName i) <'/include'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName occ) <' -I'> ($ Id.VSub_DollarName i) <'/include'> ) } ) ] redirects: [] ) ] spids: [2882 2892] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName i) <'/lib'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cc) <' -L'> ($ Id.VSub_DollarName i) <'/lib'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName occ) <' -L'> ($ Id.VSub_DollarName i) <'/lib'> ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [y] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName libpaths)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName y) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ($ Id.VSub_DollarName y) <Id.Lit_Colon ':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'i/lib'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name y) <_default> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<export>} {($ Id.VSub_DollarName y)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [2915 2925] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'int i = 1;'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'(;'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cctest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cctest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cctest='> name:cctest) op: assign_op.Equal rhs: {(DQ <'should not compile \'(;\''>)} ) ] redirects: [] ) ] spids: [3040 3058] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [3008 3026] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cctest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cctest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cctest='> name:cctest) op: assign_op.Equal rhs: {(DQ <'should compile \'int i = 1;\''>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cctest)}) 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 'cctest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cctest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cctest='> name:cctest) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName cc) <': not a C compiler: '> ($ Id.VSub_DollarName cctest) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <checkread> name: checkread body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cctest)}) 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: <checkcc> more_env: [] words: [{<checkcc>}] 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 posix_read)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-no> pattern: (pat.Words words:[{<-no>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_read='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_read='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_read='> name:posix_read) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<_checkread_line>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName _checkread_line)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'a z\n'>] ) ) ] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 posix_read)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'a z'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_read='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_read='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_read='> name:posix_read) 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: <copy> more_env: [] words: [ {<copy>} {(${ Id.VSub_Name tmp) <r.c>} { (DQ <'\n'> <'\t\textern int read();\n'> <'\t\textern int write();\n'> <'\t\tint main()\n'> <'\t\t{\n'> <'\t\t\tchar\tc;\n'> <'\t\t\tchar\tr;\n'> <'\t\t\tint\tk;\n'> <'\t\t\tchar\ts[32];\n'> <'\t\t\tk = 0;\n'> <'\t\t\twhile (read(0, &c, 1) == 1)\n'> <'\t\t\t{\n'> <'\t\t\t\tif (k >= 0)\n'> <'\t\t\t\t{\n'> <'\t\t\t\t\tif (c == \' \' || c == \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'t\')\n'> <'\t\t\t\t\t{\n'> <'\t\t\t\t\t\tif (k < sizeof(s))\n'> <'\t\t\t\t\t\t\ts[k++] = c;\n'> <'\t\t\t\t\t\tcontinue;\n'> <'\t\t\t\t\t}\n'> <'\t\t\t\t\tif (k > 1 && c != \'#\' && c != \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'n\' && c != \''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'r\')\n'> <'\t\t\t\t\t\twrite(1, s + 1, k - 1);\n'> <'\t\t\t\t\tk = -1;\n'> <'\t\t\t\t}\n'> <'\t\t\t\tif (c == \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'r\')\n'> <'\t\t\t\t{\n'> <'\t\t\t\t\tr = c;\n'> <'\t\t\t\t\tif (read(0, &c, 1) == 1 && c != \''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'n\')\n'> <'\t\t\t\t\t\twrite(1, &r, 1);\n'> <'\t\t\t\t}\n'> <'\t\t\t\twrite(1, &c, 1);\n'> <'\t\t\t\tif (c == \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'n\')\n'> <'\t\t\t\t\treturn 0;\n'> <'\t\t\t}\n'> <'\t\t\treturn 1;\n'> <'\t\t}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {(${ Id.VSub_Name tmp) <r.exe>} {(${ Id.VSub_Name tmp) <r.c>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_read='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_read='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'posix_read='> name: posix_read ) op: assign_op.Equal rhs: {(${ Id.VSub_Name tmp) <r.exe>} ) ] redirects: [] ) ] spids: [3288 3310] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': cannot compile read -r workaround'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <execute> name: execute body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName verbose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'noteout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'noteout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noteout='> name:noteout) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nullout)} ) ] 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 'noteout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'noteout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noteout='> name:noteout) op: assign_op.Equal rhs: {($ Id.VSub_DollarName stderr)} ) ] 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>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName cross))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <crossexec> more_env: [] words: [{<crossexec>} {($ Id.VSub_DollarName cross)} {(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {($ Id.VSub_DollarName noteout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_execute_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_execute_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_execute_='> name:_execute_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] spids: [3383 3398] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {<'/NextDeveloper'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {($ Id.VSub_DollarName noteout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_execute_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_execute_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_execute_='> name:_execute_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] spids: [3416 3425] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {($ Id.VSub_DollarName noteout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_execute_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_execute_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_execute_='> name:_execute_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName _execute_)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <exclude> name: exclude body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName excludes)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_exclude_var] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_exclude_old='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) ($ Id.VSub_DollarName _exclude_var) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _exclude_old)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' -I'>) <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 '_exclude_new='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_new='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_new='> name: _exclude_new ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_exclude_sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_sep='> name: _exclude_sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_exclude_arg] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName _exclude_old)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_exclude_skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_skip='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_skip='> name: _exclude_skip ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_exclude_dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName excludes)}]) 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 _exclude_arg)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-I> pattern: (pat.Words words: [ {<-I> ($ Id.VSub_DollarName _exclude_dir)} {<-I> <Id.Lit_Star '*'> <'/'> ($ Id.VSub_DollarName _exclude_dir) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_exclude_skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_skip='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_skip='> name: _exclude_skip ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) terminator: <Id.Op_Semi _> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _exclude_skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_exclude_new='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_new='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_new='> name: _exclude_new ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _exclude_new) ($ Id.VSub_DollarName _exclude_sep) ($ Id.VSub_DollarName _exclude_arg) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_exclude_sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_exclude_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_exclude_sep='> name: _exclude_sep ) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName _exclude_var) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <_exclude_new> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName debug)}) 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>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {<exclude>} {($ Id.VSub_DollarName _exclude_var) <Id.Lit_Colon ':'>} { (DQ ($ Id.VSub_DollarName _exclude_old) <' => '> ($ Id.VSub_DollarName _exclude_new) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'all='> name:all) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'apis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'apis='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apis='> name:apis) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'binding='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binding='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'binding='> name:binding) op: assign_op.Equal rhs: { (DQ < '-dy -dn -Bdynamic -Bstatic -Wl,-ashared -Wl,-aarchive -call_shared -non_shared \'\' -static' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'complete='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'complete='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'complete='> name:complete) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'config='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'config='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config='> name:config) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'defhdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'defhdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'defhdr='> name:defhdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'define='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'define='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'explicit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'explicit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'explicit='> name:explicit) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'iff='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'iff='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iff='> name:iff) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cross='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cross='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cross='> name:cross) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (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: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'deflib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'deflib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'deflib='> name:deflib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {<FEATURE>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'excludes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'excludes='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'excludes='> name:excludes) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'executable='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'executable='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'executable='> name:executable) op: assign_op.Equal rhs: {(DQ <'test -x'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'exists='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exists='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exists='> name:exists) op: assign_op.Equal rhs: {(DQ <'test -e'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gothdr='> name:gothdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gotlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gotlib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gotlib='> name:gotlib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'idno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'idno='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'idno='> name:idno) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'idyes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'idyes='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'idyes='> name:idyes) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name IFS> var_name: IFS suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{(SQ <'\n'> <'\t '>)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'in='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'in='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in='> name:in) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'includes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'includes='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'includes='> name:includes) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'intrinsic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'intrinsic='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'intrinsic='> name:intrinsic) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'libpaths='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'libpaths='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'libpaths='> name:libpaths) op: assign_op.Equal rhs: {(DQ <'LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARY64_PATH LIBPATH SHLIB_PATH'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LD_LIBRARY_PATH_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD_LIBRARY_PATH_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LD_LIBRARY_PATH_default='> name: LD_LIBRARY_PATH_default ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <'/lib'> <Id.Lit_Colon ':'> <'/usr/lib'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LD_LIBRARYN32_PATH_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD_LIBRARYN32_PATH_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LD_LIBRARYN32_PATH_default='> name: LD_LIBRARYN32_PATH_default ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <'/lib32'> <Id.Lit_Colon ':'> <'/usr/lib32'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LD_LIBRARY64_PATH_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD_LIBRARY64_PATH_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LD_LIBRARY64_PATH_default='> name: LD_LIBRARY64_PATH_default ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <'/lib64'> <Id.Lit_Colon ':'> <'/usr/lib64'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LIBPATH_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LIBPATH_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBPATH_default='> name:LIBPATH_default) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <'/lib'> <Id.Lit_Colon ':'> <'/usr/lib'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHLIB_PATH_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHLIB_PATH_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHLIB_PATH_default='> name:SHLIB_PATH_default) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <'/shlib'> <Id.Lit_Colon ':'> <'/usr/shlib'> <Id.Lit_Colon ':'> <'/lib'> <Id.Lit_Colon ':'> <'/usr/lib'> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(DQ <'\n'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'optimize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'optimize='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'optimize='> name:optimize) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'occ='> name:occ) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'one='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'one='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'one='> name:one) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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.ShAssignment left: <Id.Lit_VarLike 'posix_read='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_read='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_read='> name:posix_read) op: assign_op.Equal rhs: {<-check>} ) ] 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.AndOr children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-f>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {<Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Pound '#')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <f>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>] ) 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: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_noglob='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_noglob='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_noglob='> name:posix_noglob) op: assign_op.Equal rhs: {(DQ <'set -f'>)} ) (AssignPair left: <Id.Lit_VarLike 'posix_glob='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_glob='> name:posix_glob) op: assign_op.Equal rhs: {(DQ <'set +f'>)} ) ] 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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.AndOr children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-F>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {<Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Pound '#')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <F>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>] ) 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: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_noglob='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_noglob='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'posix_noglob='> name: posix_noglob ) op: assign_op.Equal rhs: {(DQ <'set -F'>)} ) (AssignPair left: <Id.Lit_VarLike 'posix_glob='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_glob='> name:posix_glob) op: assign_op.Equal rhs: {(DQ <'set +F'>)} ) ] 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 'posix_noglob='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_noglob='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'posix_noglob='> name: posix_noglob ) op: assign_op.Equal rhs: {(DQ <':'>)} ) (AssignPair left: <Id.Lit_VarLike 'posix_glob='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'posix_glob='> name:posix_glob) op: assign_op.Equal rhs: {(DQ <':'>)} ) ] 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 'protoflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'protoflags='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protoflags='> name:protoflags) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'puthdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'puthdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'puthdr='> name:puthdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'putlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'putlib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'putlib='> name:putlib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pragma='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pragma='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pragma='> name:pragma) 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 RANDOM)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$RANDOM'> pattern: (pat.Words words:[{($ Id.VSub_DollarName RANDOM)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {<bsh>} ) ] redirects: [] ) (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <Id.VSub_DollarName '$executable'> more_env: [] words: [{($ Id.VSub_DollarName executable)} {<.>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) (command.ShAssignment left: <Id.Lit_VarLike 'executable='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'executable='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'executable='> name:executable) op: assign_op.Equal rhs: {(SQ <'test -r'>)} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <Id.VSub_DollarName '$exists'> more_env: [] words: [{($ Id.VSub_DollarName exists)} {<.>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) (command.ShAssignment left: <Id.Lit_VarLike 'exists='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exists='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exists='> name:exists) op: assign_op.Equal rhs: {(SQ <'test -r'>)} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] 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 BASH_VERSION)}) 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 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {<bash>} ) ] 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 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {<ksh>} ) ] 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 'reallystatic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'reallystatic='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reallystatic='> name:reallystatic) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'reallystatictest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'reallystatictest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reallystatictest='> name:reallystatictest) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'regress='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'regress='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regress='> name:regress) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'static='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'static='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'static='> name:static) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'statictest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'statictest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'statictest='> name:statictest) 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 COTEMP)}) 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 HOSTNAME)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} ] ) middle: <Id.Right_CasePat _> 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_Name HOSTNAME)} ) ] 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 shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName HOSTNAME)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/\\(....\\).*/tmp=\\1/'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'tmp=${HOSTNAME%${HOSTNAME#????}}'>)}] redirects: [] 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: [] ) (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_Name tmp) ($ Id.VSub_Dollar '$')} ) ] 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 '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: {<x> (${ Id.VSub_Name COTEMP)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COTEMP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COTEMP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COTEMP='> name:COTEMP) op: assign_op.Equal rhs: {(${ Id.VSub_Name tmp)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<COTEMP>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName tmp)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'./'> pattern: (pat.Words words:[{<'./'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <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 shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName tmp)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/\\(.........\\).*/tmp=\\1/'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'tmp=${tmp%${tmp#?????????}}'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> 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: {<F> ($ Id.VSub_DollarName tmp)} ) ] 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 tmp)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'./'> pattern: (pat.Words words:[{<'./'> <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_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 tmp)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'undef='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'undef='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'undef='> name:undef) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (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: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'vers='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'vers='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vers='> name:vers) 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (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: {<->} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.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.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 '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: iffe (AT&T Research) 2012-07-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?iffe - C compilation environment feature probe]\n' > <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a command interpreter that probes the C\n'> <Id.Char_Literals '\tcompilation environment for features. A feature is any file, option\n' > <Id.Char_Literals '\tor symbol that controls or is controlled by the C compiler. ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\ttests features by generating and compiling C programs and observing\n' > <Id.Char_Literals '\tthe behavior of the C compiler and generated programs.]\n' > <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statements are line oriented. Statements may appear in the\n' > <Id.Char_Literals '\toperand list with the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ':'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' operand or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals newline> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' as the line\n'> <Id.Char_Literals '\tdelimiter. The standard input is read if there are no command\n' > <Id.Char_Literals '\tline statements or if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is omitted.]\n'> <Id.Char_Literals '[+?Though similar in concept to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals autoconf> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), there\n'> <Id.Char_Literals '\tare fundamental differences. The latter tend to generate global\n' > <Id.Char_Literals '\theaders accessed by all components in a package, whereas ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\taimed at localized, self contained feature testing.]\n' > <Id.Char_Literals '[+?Output is generated in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'FEATURE/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' by default, where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\tthe base name of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals run> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tfile operand. Output is first generated in a temporary file; the\n' > <Id.Char_Literals '\toutput file is updated if it does not exist or if the temporary file\n' > <Id.Char_Literals '\tis different. If the first operand is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the output is written\n'> <Id.Char_Literals '\tto the standard output and no update checks are done.]\n' > <Id.Char_Literals '[+?Files with suffixes '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .iff> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are assumed to contain\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statements.]\n'> <Id.Char_Literals '[a:all?Define failed test macros '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. By default only successful test macros\n'> <Id.Char_Literals '\tare defined '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[c:cc?Sets the C compiler name and flags to be used in the feature\n' > <Id.Char_Literals '\ttests.]:[C-compiler-name [C-compiler-flags ...]]]\n'> <Id.Char_Literals '[C:config?Generate '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) style '> <Id.Char_OneChar '\\a'> <Id.Char_Literals HAVE_> <Id.Char_OneChar '\\a'> <Id.Char_Literals '* macro names. This implies\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --undef> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Since '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) has inconsistent naming conventions,\n'> <Id.Char_Literals '\tthe '> <Id.Char_OneChar '\\b'> <Id.Char_Literals exp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' op may be needed to translate from the (consistent)\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' names. Unless otherwise noted a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name\n'> <Id.Char_Literals '\tis the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name prefixed with '> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and converted to\n'> <Id.Char_Literals '\tupper case. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is set by default if the command arguments\n'> <Id.Char_Literals '\tcontain a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals run> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' op on an input file with the base name '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[d:debug?Sets the debug level. Level 0 inhibits most\n'> <Id.Char_Literals '\terror messages, level 1 shows compiler messages, and\n' > <Id.Char_Literals '\tlevel 2 traces internal '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) actions and does\n'> <Id.Char_Literals '\tnot remove core dumps on exit.]#[level]\n'> <Id.Char_Literals '[D:define?Successful test macro definitions are emitted. This is the default.]\n' > <Id.Char_Literals '[E:explicit?Disable implicit test output.]\n'> <Id.Char_Literals '[F:features?Sets the feature test header to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals hdr> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. This header typically\n'> <Id.Char_Literals ' defines *_SOURCE feature test macros.]:[hdr:=NONE]\n' > <Id.Char_Literals '[i:input?Sets the input file name to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', which\n'> <Id.Char_Literals '\tmust contain '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statements.]:[file]\n'> <Id.Char_Literals '[I:include?Adds '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -I> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to the C compiler flags.]:[dir]\n'> <Id.Char_Literals '[L:library?Adds '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -L> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to the C compiler flags.]:[dir]\n'> <Id.Char_Literals '[n:name-value?Output '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' assignments only.]\n'> <Id.Char_Literals '[N!:optimize?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --nooptimize> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' disables compiler optimization options.]\n'> <Id.Char_Literals '[o:output?Sets the output file name to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:[file]\n'> <Id.Char_Literals '[O:stdio?Sets the standard io header to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals hdr> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:[hdr:=stdio.h]\n'> <Id.Char_Literals '[e:package?Sets the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) package name to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:[name]\n'> <Id.Char_Literals '[p:prototyped?Emits '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#pragma prototyped'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' at the top of the\n'> <Id.Char_Literals '\toutput file. See '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[P:pragma?Emits '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#pragma'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' at the top of the output file.]:[text]\n'> <Id.Char_Literals '[r:regress?Massage output for regression testing.]\n'> <Id.Char_Literals '[s:shell?Sets the internal shell name to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Used for debugging\n'> <Id.Char_Literals '\tBourne shell compatibility (otherwise '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' uses '> <Id.Char_OneChar '\\a'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' constructs\n'> <Id.Char_Literals '\tif available). The supported names are '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals bsh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals bash> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', and\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals osh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals osh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' forces the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'read -r'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' compatibility read command to\n'> <Id.Char_Literals '\tbe compiled and used instead of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'read -r'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The default is determined\n'> <Id.Char_Literals '\tby probing the shell at startup.]:[name]\n'> <Id.Char_Literals '[S:static?Sets the C compiler flags that force static linking. If not set\n' > <Id.Char_Literals '\tthen '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' probes the compiler to determine the flags. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tmust use static linking (no dlls) because on some systems missing\n' > <Id.Char_Literals '\tlibrary symbols are only detected when referenced at runtime from\n' > <Id.Char_Literals '\tdynamically linked executables.]:[flags]\n'> <Id.Char_Literals '[u:undef?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#undef'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' failed test macros. By default only successful test macros\n' > <Id.Char_Literals '\tare defined '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[v:verbose?Produce a message line on the standard error for each test as\n' > <Id.Char_Literals '\tit is performed.]\n'> <Id.Char_Literals '[x:cross?Some tests compile an executable ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals a.out> <Id.Char_OneChar '\\b'> <Id.Char_Literals ') and then run it.\n'> <Id.Char_Literals '\tIf the C compiler is a cross compiler and the executable format is\n' > <Id.Char_Literals '\tincompatible with the execution environment then the generated\n' > <Id.Char_Literals '\texecutables must be run in a different environment, possibly on\n' > <Id.Char_Literals '\tanother host. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals crosstype> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is the HOSTTYPE for generated executables\n'> <Id.Char_Literals '\t(the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command generates a consistent HOSTTYPE namespace).\n' > <Id.Char_Literals '\tGenerated executables are run via '> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) with '> <Id.Char_OneChar '\\a'> <Id.Char_Literals crosstype> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tas the first argument. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' supports remote execution for\n'> <Id.Char_Literals '\tcross-compiled executables. See '> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) for\n'> <Id.Char_Literals '\tdetails.]:[crosstype]\n'> <Id.Char_Literals '[X:exclude?Removes '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -I> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -I> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' C compiler flags.]:[dir]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[ - ] [ file.iffe | statement [ : statement ... ] ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SYNTAX?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' input consists of a sequence of statement lines. Statements\n' > <Id.Char_Literals '\tthat span more than one line contain '> <Id.Char_OneChar '\\a'> <Id.Char_Literals begin> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' as the last\n'> <Id.Char_Literals '\toperand (where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals begin> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is command specific) and zero\n'> <Id.Char_Literals '\tor more data lines terminated by a line containing\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}end'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' as the first operand. The statement syntax is:\n'> <Id.Char_Literals '\t['> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '='> <Id.Char_OneChar '\\b'> <Id.Char_Literals ']] ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals '!'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ']] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[,'> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals '...]] ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ']]\n'> <Id.Char_Literals '\t['> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[,'> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals '...]]]] ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals prereq> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...]]\n'> <Id.Char_Literals '\t['> <Id.Char_OneChar '\\a'> <Id.Char_Literals begin> <Id.Char_OneChar '\\a'> <Id.Char_Literals '{ ... |'> <Id.Char_OneChar '\\b'> <Id.Char_Literals end> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ...]] [= ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals default> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]]].\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals 's and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals 's may be combined, separated by commas, to perform\n'> <Id.Char_Literals '\ta set of tests on a set of arguments. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '='> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' before '> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\toverrides the default test variable and macro name, and ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' after\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' performs the test but does not define the test variable and\n' > <Id.Char_Literals '\tmacro values. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '!'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' before '> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' inverts the test sense for '> <Id.Char_OneChar '\\b'> <Id.Char_Literals if> <Id.Char_OneChar '\\b'> <Id.Char_Literals ',\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals elif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'yes{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'no{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' blocks.]\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals prereq> <Id.Char_OneChar '\\a'> <Id.Char_Literals 's are used when applying the features tests and may be\n' > <Id.Char_Literals '\tcombinations of:]{\n'> <Id.Char_Literals '\t\t[+compiler options?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals -D> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*, '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -L> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*, etc.]\n'> <Id.Char_Literals '\t\t[+library references?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals -l> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*, *'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .a> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', etc. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _LIB_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t\tis defined to be 1 if '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -l> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a library.]\n'> <Id.Char_Literals '\t\t[+header references?*'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .h> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals _dir_name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is defined to be 1\n'> <Id.Char_Literals '\t\t\tif '> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'dir/name'> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .h> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a header, or if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\t\t\tomitted, '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _hdr_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is defined to be 1 if\n'> <Id.Char_Literals '\t\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .h> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a header.]\n'> <Id.Char_Literals '\t\t[+-?Prereq grouping mark; prereqs before the first ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are\n'> <Id.Char_Literals '\t\t\tpassed to all feature tests. Subsequent groups\n'> <Id.Char_Literals '\t\t\tare attempted in left-to-right order until the first\n' > <Id.Char_Literals '\t\t\tsuccessful group is found.]\n'> <Id.Char_Literals '\t}\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals begin> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}end'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' delimit multiline code blocks that override\n'> <Id.Char_Literals '\tor augment the default code provided by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. User supplied code\n'> <Id.Char_Literals '\tblocks should be compatible with the K&R, ANSI, and C++ C language\n' > <Id.Char_Literals '\tdialects for maximal portability. Test code may call the function\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'NOTE("...")'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to emit short text in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --verbose> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' output; only one\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'NOTE()'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' should be called per test for readability. In addition to\n' > <Id.Char_Literals '\tall macro definitions generated by previous tests, all generated\n' > <Id.Char_Literals '\tcode contains the following at the top to hide dialect differences:]{\n' > <Id.Char_Literals '\t\t[+ ?#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)]\n' > <Id.Char_Literals '\t\t[+ ?#define _STD_ 1]\n'> <Id.Char_Literals '\t\t[+ ?#define _ARG_(x) x]\n'> <Id.Char_Literals '\t\t[+ ?#define _VOID_ void]\n'> <Id.Char_Literals '\t\t[+ ?#else]\n'> <Id.Char_Literals '\t\t[+ ?#define _STD_ 0]\n'> <Id.Char_Literals '\t\t[+ ?#define _ARG_(x) ()]\n'> <Id.Char_Literals '\t\t[+ ?#define _VOID_ char]\n'> <Id.Char_Literals '\t\t[+ ?#endif]\n'> <Id.Char_Literals '\t\t[+ ?#if defined(__cplusplus)]\n'> <Id.Char_Literals '\t\t[+ ?#define _BEGIN_EXTERNS_ extern "C" {]\n'> <Id.Char_Literals '\t\t[+ ?#define _END_EXTERNS_ }]\n'> <Id.Char_Literals '\t\t[+ ?#else]\n'> <Id.Char_Literals '\t\t[+ ?#define _BEGIN_EXTERNS_]\n'> <Id.Char_Literals '\t\t[+ ?#define _END_EXTERNS_]\n'> <Id.Char_Literals '\t\t[+ ?#endif]\n'> <Id.Char_Literals '\t\t[+ ?#define _NIL_(x) ((x)0)]\n'> <Id.Char_Literals '\t\t[+ ?#include <stdio.h>]\n'> <Id.Char_Literals '\t}\n'> <Id.Char_Literals '[+?= '> <Id.Char_OneChar '\\a'> <Id.Char_Literals default> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be specified for the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals key> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals lib> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mac> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mth> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tand '> <Id.Char_OneChar '\\b'> <Id.Char_Literals typ> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' tests. If the test fails for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' then\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#define'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals default> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is emitted. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals key> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' accepts multiple\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '= '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals default> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' values; the first valid one is used.]\n'> <Id.Char_Literals '[+?Each test statement generates a portion of a C language header that contains\n' > <Id.Char_Literals '\tmacro defintions, comments, and other text corresponding to the feature\n' > <Id.Char_Literals '\ttests. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#ifndef _def_'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#endif'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' guards the generated header from multiple '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 's,\n'> <Id.Char_Literals '\twhere '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is determined by either the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals run> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statement input file\n'> <Id.Char_Literals '\tname if any, or the first '> <Id.Char_OneChar '\\a'> <Id.Char_Literals test> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' in the first statement, and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tis the basename component of either the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals run> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statement file, if any,\n'> <Id.Char_Literals '\tor the current working directory. The output file name is determined\n' > <Id.Char_Literals '\tin this order:]{\n'> <Id.Char_Literals '\t\t[+-?If the first command line operand is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the output\n'> <Id.Char_Literals '\t\t\tis written to the standard output.]\n'> <Id.Char_Literals '\t\t[+--output='> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Output is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t\t[+set out '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Output is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t\t[+[run]] ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '/]]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals base> <Id.Char_OneChar '\\a'> <Id.Char_Literals '['> <Id.Char_OneChar '\\a'> <Id.Char_Literals .suffix> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]?Output is\n'> <Id.Char_Literals '\t\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'FEATURE/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals base> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t}\n'> <Id.Char_Literals '[+?Generated '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' headers are often referenced in C source as:\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include "FEATURE/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '". The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) base rules contain\n'> <Id.Char_Literals '\tmetarules for generating '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'FEATURE/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' from\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'features/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '['> <Id.Char_OneChar '\\a'> <Id.Char_Literals suffix> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']], where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals suffix> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be omitted,\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .c> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (see the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals run> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' test below). Because\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' prerequisites are automatically detected, '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals '\tensures that all prerequisite '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' headers are generated before\n'> <Id.Char_Literals '\tcompilation. Note that the directories are deliberately named\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals FEATURE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals features> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to keep case-ignorant file systems\n'> <Id.Char_Literals '\thappy.]\n'> <Id.Char_Literals '[+?The feature tests are:]{\n'> <Id.Char_Literals '\t[+# '> <Id.Char_OneChar '\\a'> <Id.Char_Literals comment> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Comment line - ignored.]\n'> <Id.Char_Literals '\t[+api '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'symbol ...'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Emit api compatibility tests\n'> <Id.Char_Literals '\t\tfor '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#define'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals symbol> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals symbol> <Id.Char_OneChar '\\a'> <Id.Char_Literals _> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\twhen '> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_Literals '_API is >= '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ('> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tconverted to upper case). If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_Literals '_API is not defined\n'> <Id.Char_Literals '\t\tthen '> <Id.Char_OneChar '\\a'> <Id.Char_Literals symbol> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' maps to the newest '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+define '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ ('> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'arg,...'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ') ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Emit a macro\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#define'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if it is not already defined. The\n'> <Id.Char_Literals '\t\tdefinition is passed to subsequent tests.]\n'> <Id.Char_Literals '\t[+extern '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals type> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ ('> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'arg,...'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ') | ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals dimension> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']] ]]?Emit\n'> <Id.Char_Literals '\t\tan '> <Id.Char_OneChar '\\b'> <Id.Char_Literals extern> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' prototype for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if one is not already\n'> <Id.Char_Literals '\t\tdefined. The prototype is passed to subsequent tests.]\n' > <Id.Char_Literals '\t[+header '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Emit '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include <'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\texists. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is passed to subsequent tests.]\n'> <Id.Char_Literals '\t[+print '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Copy '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to the output file. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is passed\n'> <Id.Char_Literals '\t\tto subsequent tests.]\n'> <Id.Char_Literals '\t[+reference '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' exists then add '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to subsequent tests.]\n'> <Id.Char_Literals '\t[+ver '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#define'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_Literals '_VERSION '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t('> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' converted to upper case).]\n'> <Id.Char_Literals '\t[+cmd '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _cmd_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is an executable\n'> <Id.Char_Literals '\t\tin one of the standard system directories ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/bin, /etc,\n'> <Id.Char_Literals '\t\t/usr/bin, /usr/etc, /usr/ucb'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ').\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is defined for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tin which '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is found (with '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' translated to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_Literals ').]\n'> <Id.Char_Literals '\t[+dat '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _dat_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a data symbol\n'> <Id.Char_Literals '\t\tin the default libraries.]\n'> <Id.Char_Literals '\t[+def '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Equivalent to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'cmd,dat,hdr,key,lib,mth,sys,typ'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+dfn '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a macro in the candidate headers then\n'> <Id.Char_Literals '\t\ta '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#define'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' statment is output for the\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' defined in the headers. The definition is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#ifndef'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tguarded.]\n'> <Id.Char_Literals '\t[+exp '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a '> <Id.Char_OneChar '\\"'> <Id.Char_Literals ...> <Id.Char_OneChar '\\"'> <Id.Char_Literals ' string\n'> <Id.Char_Literals '\t\tthen '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is defined to be the string, else if the\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals expr> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) evaluation of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is not 0 then '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tis defined to be 1, otherwise '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is defined to be 0.\n'> <Id.Char_Literals '\t\tIdentifiers in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be previously defined names\n'> <Id.Char_Literals '\t\tfrom other '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' tests; undefined names evaluate to 0.\n'> <Id.Char_Literals '\t\tIf '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' was defined in a previous successful test then\n'> <Id.Char_Literals '\t\tthe current and subsequent '> <Id.Char_OneChar '\\b'> <Id.Char_Literals exp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' test on '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are\n'> <Id.Char_Literals '\t\tskipped. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\t\tsimply evaluated.]\n'> <Id.Char_Literals '\t[+hdr '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _hdr_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if the header\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exists. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _H> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals statement> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals elif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals statement> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals else> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals endif> <Id.Char_OneChar '\\b'> <Id.Char_Literals '?\n'> <Id.Char_Literals '\t\tNested if-else test control.]\n'> <Id.Char_Literals '\t[+iff '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?The generated header '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#ifndef-#endif'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro guard is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _H> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+inc '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ re ]]?Read #define macro names from '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tand arrange for those names to evaluate to 1 in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals exp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\texpressions. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals re> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is specified then macros not matching\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals re> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are ignored.]\n'> <Id.Char_Literals '\t[+key '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _key_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a reserved\n'> <Id.Char_Literals '\t\tword (keyword).]\n'> <Id.Char_Literals '\t[+lcl '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Generates a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statement for the native version\n'> <Id.Char_Literals '\t\tof the header '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' if it exists. Defines\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _lcl_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on success. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _H> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The default '> <Id.Char_OneChar '\\a'> <Id.Char_Literals re> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '^HAVE_'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tfor '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '^_'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' otherwise.]\n'> <Id.Char_Literals '\t[+lib '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _lib_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is an external\n'> <Id.Char_Literals '\t\tsymbol in the default libraries.]\n'> <Id.Char_Literals '\t[+mac '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _mac_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a macro.]\n'> <Id.Char_Literals '\t[+mem '> <Id.Char_OneChar '\\a'> <Id.Char_Literals struct.member> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _mem_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals member> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals struct> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tif '> <Id.Char_OneChar '\\a'> <Id.Char_Literals member> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a member of the structure '> <Id.Char_OneChar '\\a'> <Id.Char_Literals struct> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+mth '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _mth_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is an external\n'> <Id.Char_Literals '\t\tsymbol in the math library.]\n'> <Id.Char_Literals '\t[+nop '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?If this is the first test then '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be used\n'> <Id.Char_Literals '\t\tto name the output file and/or the output header guard macro.\n' > <Id.Char_Literals '\t\tOtherwise this test is ignored.]\n'> <Id.Char_Literals '\t[+npt '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _npt_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' symbol\n'> <Id.Char_Literals '\t\trequires a prototype. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE_> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _DECL> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' with the opposite sense.]\n'> <Id.Char_Literals '\t[+num '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _num_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a numeric\n'> <Id.Char_Literals '\t\tconstant '> <Id.Char_OneChar '\\a'> <Id.Char_Literals enum> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\a'> <Id.Char_Literals macro> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+nxt '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines a string macro '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _nxt_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' suitable for\n'> <Id.Char_Literals '\t\ta '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statement to include the next (on the include\n'> <Id.Char_Literals '\t\tpath) or native version of the header '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tif it exists. Also defines the '> <Id.Char_OneChar '\\"'> <Id.Char_Literals ...> <Id.Char_OneChar '\\"'> <Id.Char_Literals ' form\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _nxt_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _str> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _NEXT> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+one '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?Generates a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#include'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' statement for the first\n'> <Id.Char_Literals '\t\theader found in the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals header> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' list.]\n'> <Id.Char_Literals '\t[+opt '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _opt_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a space-separated\n'> <Id.Char_Literals '\t\ttoken in the global environment variable '> <Id.Char_OneChar '\\b'> <Id.Char_Literals PACKAGE_OPTIONS> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+pth '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... | { '> <Id.Char_OneChar '\\a'> <Id.Char_Literals g1> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' - ... - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals gn> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' } | < '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pkg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals ver> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...]] > ]]?Defines\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _pth_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', with embedded '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' chars translated to\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', to the path of the first instance of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' in the\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' directories. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' forms a directory list\n'> <Id.Char_Literals '\t\tfrom the cross-product of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' separated directory groups\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals g1> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\a'> <Id.Char_Literals gn> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. < ... > forms a directory list for the\n'> <Id.Char_Literals '\t\tpackage '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pkg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' with optional versions. If no operands are\n'> <Id.Char_Literals '\t\tspecified then the default PATH directories are used. The\n' > <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _PATH> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+run '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Runs the tests in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' based on the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tsuffix:]{\n'> <Id.Char_Literals '\t\t[+.c?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is compiled and executed and the output is copied\n'> <Id.Char_Literals '\t\t\tto the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' output file. Macros and headers supplied\n'> <Id.Char_Literals '\t\t\tto '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'begin{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}end'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are also supplied to\n'> <Id.Char_Literals '\t\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t\t[+.sh?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is executed as a shell script and the output is\n'> <Id.Char_Literals '\t\t\tcopied to the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' output file.]\n'> <Id.Char_Literals '\t\t[+.iffe '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'or no suffix?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' contains '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t\tstatements.]\n'> <Id.Char_Literals '\t}\n'> <Id.Char_Literals '\t[+set '> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'option value'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Sets option values. The options are described\n'> <Id.Char_Literals '\t\tabove.]\n'> <Id.Char_Literals '\t[+siz '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _siz_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to be '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sizeof> <Id.Char_OneChar '\\b'> <Id.Char_Literals '('> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ') if\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a type in any of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<sys/types.h>, <times.h>,\n'> <Id.Char_Literals '\t\t<stddef.h>, <stdlib.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Any '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' characters in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are\n'> <Id.Char_Literals '\t\ttranslated to space before testing and are translated to ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tin the output macro name.]\n'> <Id.Char_Literals '\t[+sym '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _ary_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is an array,\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _fun_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a function pointer,\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _ptr_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a pointer, or\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _reg_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a scalar. In most cases\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is part of a macro expansion.]\n'> <Id.Char_Literals '\t[+sys '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _sys_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if the header\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<sys/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exists. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --config> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' macro name is\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals HAVE_SYS_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals NAME> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals _H> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+tst '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?A user defined test on name. A source block must be\n'> <Id.Char_Literals '\t\tsupplied. Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on success. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'tst - ...'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\t\ttreated as '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'tst - - ...'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+typ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _typ_> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a type in any\n'> <Id.Char_Literals '\t\tof '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<sys/types.h>, <times.h>, <stddef.h>, <stdlib.h>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Any\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' characters in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are translated to space before\n'> <Id.Char_Literals '\t\ttesting and are translated to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' in the output macro name.]\n'> <Id.Char_Literals '\t[+val '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?The output of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals echo> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is written to the\n'> <Id.Char_Literals '\t\toutput file.]\n'> <Id.Char_Literals '\t[+var '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?A user defined test on name. A source block must be\n'> <Id.Char_Literals '\t\tsupplied. Sets the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals exp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' variable '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on success\n'> <Id.Char_Literals '\t\tbut does not define a macro.]\n'> <Id.Char_Literals '\t[+('> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals ')?Equivalent to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'exp -'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals expression> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+?Code block names may be prefixed by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals no> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to invert the test sense. The\n'> <Id.Char_Literals '\tblock names are:]{\n'> <Id.Char_Literals '\t[+cat?The block is copied to the output file.]\n'> <Id.Char_Literals '\t[+compile?The block is compiled ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'cc -c'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ').]\n'> <Id.Char_Literals '\t[+cross?The block is executed as a shell script using ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals '\t\tif '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --cross> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is on, or on the local host otherwise, and the\n'> <Id.Char_Literals '\t\toutput is copied to the output file. Test macros are not\n' > <Id.Char_Literals '\t\texported to the script.]\n'> <Id.Char_Literals '\t[+execute?The block is compiled, linked, and executed. ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exit\n'> <Id.Char_Literals '\t\tstatus means success.]\n'> <Id.Char_Literals '\t[+fail?If the test fails then the block text is evaluated by\n' > <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '\t[+link?The block is compiled and linked ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'cc -o'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ').]\n'> <Id.Char_Literals '\t[+macro?The block is preprocessed ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'cc -E'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ') and lines containing\n'> <Id.Char_Literals '\t\ttext bracketed by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '<<"'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '">>'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ('> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'less-than less-than\n'> <Id.Char_Literals '\t\tdouble-quote ... double-quote greater-than greater-than' > <Id.Char_OneChar '\\a'> <Id.Char_Literals ')\n'> <Id.Char_Literals '\t\tare copied to the output file with the brackets omitted.]\n' > <Id.Char_Literals '\t[+no?If the test fails then the block text is copied to the\n' > <Id.Char_Literals '\t\toutput file. Deprecated: use { '> <Id.Char_OneChar '\\b'> <Id.Char_Literals if> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals elif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals else> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals endif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' } with unnamed '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' blocks.]\n'> <Id.Char_Literals '\t[+note?If the test succeeds then the block is copied to the output\n' > <Id.Char_Literals '\t\tas a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/*'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*/'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' comment.]\n'> <Id.Char_Literals '\t[+output?The block is compiled, linked, and executed, and the output\n' > <Id.Char_Literals '\t\tis copied to the output file.]\n'> <Id.Char_Literals '\t[+pass?If the test succeeds then the block text is evaluated by\n' > <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '\t[+preprocess?The block is preprocessed ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'cc -E'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ').]\n'> <Id.Char_Literals '\t[+run?The block is executed as a shell script and the output is\n' > <Id.Char_Literals '\t\tcopied to the output file. Succesful test macros are also\n' > <Id.Char_Literals '\t\tdefined as shell variables with value '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and are available\n'> <Id.Char_Literals '\t\twithin the block. Likewise, failed test macros are defined\n' > <Id.Char_Literals '\t\tas shell variables with value '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+status?The block is compiled, linked, and executed, and the exit\n' > <Id.Char_Literals '\t\tstatus is the test outcome, 0 for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals failure> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', the value\n'> <Id.Char_Literals '\t\totherwise.]\n'> <Id.Char_Literals '\t[+yes?If the test succeeds then the block text is copied to the output\n' > <Id.Char_Literals '\t\tfile. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'yes{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}end'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is equivalent to the unnamed block\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Deprecated: use { '> <Id.Char_OneChar '\\b'> <Id.Char_Literals if> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals elif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals else> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals endif> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' } with unnamed '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '}'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' blocks.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals autoconf> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals config> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals getconf> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {<-a>} {(DQ ($ Id.VSub_DollarName command))} {(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: <a> pattern: (pat.Words words:[{<a>}]) 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 ($ Id.VSub_DollarName set) <' set all :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words:[{<c>}]) 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 ($ Id.VSub_DollarName set) <' set cc '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) 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 ($ Id.VSub_DollarName set) <' set config :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) 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 ($ Id.VSub_DollarName set) <' set debug '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) 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 ($ Id.VSub_DollarName set) <' set define :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <E> pattern: (pat.Words words:[{<E>}]) 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 ($ Id.VSub_DollarName set) <' set explicit :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <F> pattern: (pat.Words words:[{<F>}]) 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 ($ Id.VSub_DollarName set) <' set features '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) 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 ($ Id.VSub_DollarName set) <' set input '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <I> pattern: (pat.Words words:[{<I>}]) 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 ($ Id.VSub_DollarName set) <' set include '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) 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 ($ Id.VSub_DollarName set) <' set library '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) 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 ($ Id.VSub_DollarName set) <' set namval '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <N> pattern: (pat.Words words:[{<N>}]) 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 ($ Id.VSub_DollarName set) <' set nooptimize '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) 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 ($ Id.VSub_DollarName set) <' set output '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <e> pattern: (pat.Words words:[{<e>}]) 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 ($ Id.VSub_DollarName set) <' set package '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) 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 ($ Id.VSub_DollarName set) <' set prototyped :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <P> pattern: (pat.Words words:[{<P>}]) 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 ($ Id.VSub_DollarName set) <' set pragma '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) 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 ($ Id.VSub_DollarName set) <' set regress :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) 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 ($ Id.VSub_DollarName set) <' set shell '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <S> pattern: (pat.Words words:[{<S>}]) 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 ($ Id.VSub_DollarName set) <' set static '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <O> pattern: (pat.Words words:[{<O>}]) 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 ($ Id.VSub_DollarName set) <' set stdio '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) 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 ($ Id.VSub_DollarName set) <' set undef :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) 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 ($ Id.VSub_DollarName set) <' set verbose :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>}]) 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 ($ Id.VSub_DollarName set) <' set cross '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <X> pattern: (pat.Words words:[{<X>}]) 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 ($ Id.VSub_DollarName set) <' set exclude '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [{<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.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: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--a> pattern: (pat.Words words:[{<--a>} {<--al>} {<--all>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<a>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--cc> pattern: (pat.Words words:[{<--cc> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<c> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--co> pattern: (pat.Words words: [{<--co>} {<--con>} {<--conf>} {<--confi>} {<--config>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<C>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--cr> pattern: (pat.Words words: [ {<--cr> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--cro> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--cros> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--cross> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<x> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--d> pattern: (pat.Words words: [ {<--d> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--de> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--deb> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--debu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--debug> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<d> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--def> pattern: (pat.Words words:[{<--def>} {<--defi>} {<--defin>} {<--define>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<D>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--e> pattern: (pat.Words words: [ {<--e> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--ex> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--exc> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--excl> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--exclu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--exclud> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--exclude> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<X> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--e> pattern: (pat.Words words: [ {<--e>} {<--ex>} {<--exp>} {<--expl>} {<--expli>} {<--explic>} {<--explici>} {<--explicit>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<E>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--f> pattern: (pat.Words words: [ {<--f> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--fe> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--fea> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--feat> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--featu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--featur> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--feature> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--features> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<F> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--inp> pattern: (pat.Words words: [ {<--inp> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--inpu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--input> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<i> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--inc> pattern: (pat.Words words: [ {<--inc> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--incl> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--inclu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--includ> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--include> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<I> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--l> pattern: (pat.Words words: [ {<--l> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--li> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--lib> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--libr> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--libra> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--librar> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--library> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<L> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--n> pattern: (pat.Words words: [ {<--n>} {<--na>} {<--nam>} {<--name>} {<--name-v>} {<--name-va>} {<--name-val>} {<--name-valu>} {<--name-value>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<n>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--o> pattern: (pat.Words words: [ {<--o> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--ou> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--out> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--outp> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--outpu> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--output> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<o> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--pa> pattern: (pat.Words words: [ {<--pa> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--pac> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--pack> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--packa> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--packag> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--package> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<e> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--pro> pattern: (pat.Words words: [ {<--pro>} {<--prot>} {<--proto>} {<--protot>} {<--prototy>} {<--prototyp>} {<--prototype>} {<--prototyped>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<p>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--pra> pattern: (pat.Words words: [ {<--pra> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--prag> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--pragma> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<P> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--r> pattern: (pat.Words words: [{<--r>} {<--re>} {<--reg>} {<--regre>} {<--regres>} {<--regress>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<r>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--sh> pattern: (pat.Words words: [ {<--sh> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--she> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--shel> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--shell> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<s> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--sta> pattern: (pat.Words words: [ {<--sta> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--stat> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--stati> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--static> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<S> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--std> pattern: (pat.Words words: [ {<--std> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--stdi> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} {<--stdio> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<O> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,[^=]*=,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--u> pattern: (pat.Words words: [{<--u>} {<--un>} {<--und>} {<--unde>} {<--undef>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<u>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--v> pattern: (pat.Words words: [ {<--v>} {<--ve>} {<--ver>} {<--verb>} {<--verbo>} {<--verbos>} {<--verbose>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: {<v>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--> pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<unknown>} {<option>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REM='> name:REM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<X> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,X-,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (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_DollarName REM)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName REM)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (DQ <'s,'> <Id.Lit_BadBackslash '\\'> <'(.'> <Id.Lit_BadBackslash '\\'> <')'> <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <'),OPT=\''> <Id.Lit_BadBackslash '\\'> <'1\' REM=\''> <Id.Lit_BadBackslash '\\'> <'2\','> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (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_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <cdFiILoOePsSxX> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName REM)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) 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: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'> } {<-> ($ Id.VSub_DollarName OPT) <Id.Lit_Colon ':'> } {<option>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OPTARG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTARG='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OPTARG='> name: OPTARG ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 'OPTARG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTARG='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OPTARG='> name: OPTARG ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName REM)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'REM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REM='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REM='> name: REM ) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: <a> pattern: (pat.Words words:[{<a>}]) 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 ($ Id.VSub_DollarName set) <' set all :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words:[{<c>}]) 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 ($ Id.VSub_DollarName set) <' set cc '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) 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 ($ Id.VSub_DollarName set) <' set config :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) 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 ($ Id.VSub_DollarName set) <' set debug '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) 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 ($ Id.VSub_DollarName set) <' set define :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <E> pattern: (pat.Words words:[{<E>}]) 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 ($ Id.VSub_DollarName set) <' set explicit :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <F> pattern: (pat.Words words:[{<F>}]) 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 ($ Id.VSub_DollarName set) <' set features '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) 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 ($ Id.VSub_DollarName set) <' set input '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <I> pattern: (pat.Words words:[{<I>}]) 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 ($ Id.VSub_DollarName set) <' set include '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) 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 ($ Id.VSub_DollarName set) <' set library '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) 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 ($ Id.VSub_DollarName set) <' set namval '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <N> pattern: (pat.Words words:[{<N>}]) 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 ($ Id.VSub_DollarName set) <' set nooptimize '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) 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 ($ Id.VSub_DollarName set) <' set output '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <e> pattern: (pat.Words words:[{<e>}]) 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 ($ Id.VSub_DollarName set) <' set package '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) 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 ($ Id.VSub_DollarName set) <' set prototyped :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <P> pattern: (pat.Words words:[{<P>}]) 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 ($ Id.VSub_DollarName set) <' set pragma '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) 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 ($ Id.VSub_DollarName set) <' set regress :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) 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 ($ Id.VSub_DollarName set) <' set shell '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <S> pattern: (pat.Words words:[{<S>}]) 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 ($ Id.VSub_DollarName set) <' set static '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <O> pattern: (pat.Words words:[{<O>}]) 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 ($ Id.VSub_DollarName set) <' set stdio '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) 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 ($ Id.VSub_DollarName set) <' set undef :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) 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 ($ Id.VSub_DollarName set) <' set verbose :'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>}]) 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 ($ Id.VSub_DollarName set) <' set cross '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <X> pattern: (pat.Words words:[{<X>}]) 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 ($ Id.VSub_DollarName set) <' set exclude '> ($ Id.VSub_DollarName OPTARG) <' :'> ) } ) ] 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: <echo> more_env: [] words: [ {<echo>} { (DQ <'Usage: '> ($ Id.VSub_DollarName command) < ' [-aCDEnpruv] [-c C-compiler-name [C-compiler-flags ...]] [-d level]\n' > <'\t [-F features-header] [-i file] [-o file] [-O stdio-header] [-e name] [-P text]\n'> < '\t [-s shell-path] [-S[flags]] [-x cross-exec-prefix] [-I dir] [-L dir] [-X dir] [ - ]\n' > <'\t [ file.iffe | statement [ : statement ... ] ]'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (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: {<->} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'in='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'in='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in='> name:in) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName set)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (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 '*'> (SQ <' set config '>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <' run config.'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <' run '>) <Id.Lit_Star '*'> (SQ <' config.'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <' run '>) <Id.Lit_Star '*'> (SQ <'/config.'>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'config='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'config='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config='> name:config) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'stdout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'stdout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stdout='> name:stdout) op: assign_op.Equal rhs: {<5>} ) (AssignPair left: <Id.Lit_VarLike 'stderr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stderr='> name:stderr) op: assign_op.Equal rhs: {<6>} ) (AssignPair left: <Id.Lit_VarLike 'nullin='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nullin='> name:nullin) op: assign_op.Equal rhs: {<7>} ) (AssignPair left: <Id.Lit_VarLike 'nullout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nullout='> name:nullout) op: assign_op.Equal rhs: {<8>} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'exec '> ($ Id.VSub_DollarName nullin) <'</dev/null '> ($ Id.VSub_DollarName nullout) <'>/dev/null '> ($ Id.VSub_DollarName stdout) <'>&1 '> ($ Id.VSub_DollarName stderr) <'>&2'> ) } ] redirects: [] do_fork: T ) (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 <' set debug '>) <Id.Lit_LBracket '['> <3456789> <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.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ <'exec 2>&'> ($ Id.VSub_DollarName nullout))}] 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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-n>} {<aha>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <aha> pattern: (pat.Words words:[{<aha>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {(SQ <'print -n'>)} ) (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHOW='> name:SHOW) op: assign_op.Equal rhs: {(SQ )} ) ] 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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {<aha>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-n> pattern: (pat.Words words:[{<-n> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHOW='> name:SHOW) op: assign_op.Equal rhs: {(SQ <'\\c'>)} ) ] 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 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {(SQ <'echo -n'>)} ) (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHOW='> name:SHOW) op: assign_op.Equal rhs: {(SQ )} ) ] 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 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName debug)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'core='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'core='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'core='> name:core) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'core='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'core='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'core='> name:core) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8909 8926] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'core='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'core='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'core='> name:core) op: assign_op.Equal rhs: {(DQ <'core core.??*'>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} {(DQ <'rm -f '> ($ Id.VSub_DollarName core) <' '> ($ Id.VSub_DollarName tmp) <'*'>)} {<0>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.c>}] redirects: [] do_fork: T ) ] spids: [8965 8977] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName command) <': cannot create tmp files in current dir'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'std='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'std='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'std='> name:std) op: assign_op.Equal rhs: { (SQ <'#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)\n'> <'#define _STD_\t\t1\n'> <'#define _ARG_(x)\tx\n'> <'#define _VOID_\t\tvoid\n'> <'#else\n'> <'#define _STD_\t\t0\n'> <'#define _ARG_(x)\t()\n'> <'#define _VOID_\t\tchar\n'> <'#endif\n'> <'#if defined(__cplusplus)\n'> <'#define _BEGIN_EXTERNS_\textern "C" {\n'> <'#define _END_EXTERNS_\t}\n'> <'#else\n'> <'#define _BEGIN_EXTERNS_\n'> <'#define _END_EXTERNS_\n'> <'#endif\n'> <'#define _NIL_(x)\t((x)0)'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tst='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tst='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tst='> name:tst) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ext='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: {(DQ <'#include <stdio.h>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'noext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'noext='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noext='> name:noext) op: assign_op.Equal rhs: {(SQ <'*[<"][Ss][Tt][Dd][Ii][Oo].[Hh][">]*|*<ast.h>*|*<sfio.h>*|*/[*]<NOSTDIO>[*]/*'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'argx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argx='> name:argx) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cur='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cur='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'can='> name:can) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cansep='> name:cansep) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cctest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cctest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cctest='> name:cctest) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hdrtest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdrtest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdrtest='> name:hdrtest) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifelse='> name:ifelse) op: assign_op.Equal rhs: {<NONE>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ifstack='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifstack='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifstack='> name:ifstack) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ini='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ini='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ini='> name:ini) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'init='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'init='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'init='> name:init) op: assign_op.Equal rhs: {<1>} ) ] 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: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nan='> name:nan) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'prototyped='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prototyped='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prototyped='> name:prototyped) 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_DollarName in)}) 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 argx) <Id.Lit_Colon ':'> ($ Id.VSub_Star '*')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName argv)}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'argx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argx='> name:argx) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {($ Id.VSub_DollarName argv)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ini)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<lin>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <let> more_env: [] words: [ {<let>} {<Id.Lit_VarLike 'line='> <line> <Id.Lit_Other '+'> <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.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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {($ Id.VSub_DollarName line)} {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$posix_noglob'> more_env: [] words: [{($ Id.VSub_DollarName posix_noglob)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {($ Id.VSub_DollarName lin)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$posix_glob'> more_env: [] words: [{($ Id.VSub_DollarName posix_glob)}] redirects: [] do_fork: T ) (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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [9159 9166] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> 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: <Id.VSub_DollarName '$posix_noglob'> more_env: [] words: [{($ Id.VSub_DollarName posix_noglob)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {($ Id.VSub_DollarName ini)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$posix_glob'> more_env: [] words: [{($ Id.VSub_DollarName posix_glob)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'ini='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ini='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ini='> name:ini) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName init)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (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: <iff> pattern: (pat.Words words:[{<iff>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'init='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'init='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'init='> name: init ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <print> pattern: (pat.Words words:[{<print>} {<ref>} {<set>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'init='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'init='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'init='> name: init ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ini='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ini='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ini='> name: ini ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<ini>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] 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_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifstack)}) 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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': missing endif'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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: <set> more_env: [] words: [{<set>} {<set>} {<out>} {<Id.Lit_Other '+'>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <if>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifstack='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifstack='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifstack='> name: ifstack ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ifelse) <':'> ($ Id.VSub_DollarName ifstack) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <KEEP> pattern: (pat.Words words:[{<KEEP>} {<NONE>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<TEST>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <TEST> pattern: (pat.Words words:[{<TEST>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<DONE>} ) ] 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 ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName explicit)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] 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 <elif>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <SKIP> pattern: (pat.Words words:[{<SKIP>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<TEST>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <TEST> pattern: (pat.Words words:[{<TEST>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<DONE>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <NONE> pattern: (pat.Words words:[{<NONE>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_Number 1) <': no matching if'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName explicit)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] 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 <else>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <KEEP> pattern: (pat.Words words:[{<KEEP>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<DONE>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <SKIP> pattern: (pat.Words words:[{<SKIP>} {<TEST>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: {<KEEP>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <NONE> pattern: (pat.Words words:[{<NONE>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_Number 1) <': no matching if'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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 ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <endif>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <NONE> pattern: (pat.Words words:[{<NONE>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_Number 1) <': no matching if'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifelse='> name: ifelse ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ifstack> var_name: ifstack 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 'ifstack='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifstack='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifstack='> name: ifstack ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ifstack> var_name: ifstack 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: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName ifstack)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\([^:]*\\):\\(.*\\),ifelse=\\1 ifstack=\\2,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] 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.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) 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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'('>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<exp>} {<->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.iffe>} {<Id.Lit_Star '*'> <.iff>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<run>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <run> pattern: (pat.Words words:[{<run>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Number 2)}] 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 '`'> ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] 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.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'x=${2##*[\\\\/]}'>)}] 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 x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.iffe>} {<Id.Lit_Star '*'> <.iff>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<set>} {<Id.KW_In in>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<set>} {<Id.KW_In in>} {($ Id.VSub_Number 2)}] redirects: [] 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: [] ) (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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {(DQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) (CaseArm left: <inc> pattern: (pat.Words words:[{<inc>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <DONE> pattern: (pat.Words words:[{<DONE>} {<SKIP>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] 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.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': path expected'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName p)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_DollarName p) <': file not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [10140 10151] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName config)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {(DQ <'^HAVE_'>)} ) ] 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 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {(DQ <'^_'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) 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.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': warning: '> ($ Id.VSub_Star '*') <': operands ignored'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/^#define[ \t]/!d'>)} {<-e>} {(SQ <'s/#define[ \t]//'>)} {<-e>} {(SQ <'s/[ \t(].*//'>)} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name e> var_name: e suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ <'-e/'> ($ Id.VSub_DollarName e) <'/!d'>)} ) right: <Id.Right_DollarBrace '}'> ) } {<-e>} {(SQ <'s/.*/&=1/'>)} {($ Id.VSub_DollarName p)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [ (EnvPair left: <Id.Lit_VarLike 'LC_ALL='> name: LC_ALL val: {<C>} ) ] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <set> pattern: (pat.Words words:[{<set>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <DONE> pattern: (pat.Words words:[{<DONE>} {<SKIP>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] 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.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {(DQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (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: (rhs_word__Empty) ) ] 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 '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: (rhs_word__Empty) ) ] redirects: [] ) (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: {($ Id.VSub_Number 1)} ) ] 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: <--> 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 shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_DollarName op)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/X--//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '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 op> var_name: op suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-->} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> 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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) 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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_DollarName op) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s/X-.//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_DollarName op) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ <'s/X\\(-.\\).*/\\1/'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '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 op> var_name: op suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-> <Id.Lit_Other '?'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (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 op> var_name: op suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {($ Id.VSub_DollarName arg)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <a> pattern: (pat.Words words:[{<a>}]) middle: <Id.Right_CasePat _> action: [ (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: {<all>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words:[{<c>}]) middle: <Id.Right_CasePat _> action: [ (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: {<cc>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) middle: <Id.Right_CasePat _> action: [ (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: {<config>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (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: {<debug>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) middle: <Id.Right_CasePat _> action: [ (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: {<define>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <E> pattern: (pat.Words words:[{<E>}]) middle: <Id.Right_CasePat _> action: [ (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: {<explicit>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <F> pattern: (pat.Words words:[{<F>}]) middle: <Id.Right_CasePat _> action: [ (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: {<features>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (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: {<input>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <I> pattern: (pat.Words words:[{<I>}]) middle: <Id.Right_CasePat _> action: [ (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: {<include>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) middle: <Id.Right_CasePat _> action: [ (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: {<library>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (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: {<namval>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <N> pattern: (pat.Words words:[{<N>}]) middle: <Id.Right_CasePat _> action: [ (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: {<nooptimize>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) middle: <Id.Right_CasePat _> action: [ (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: {<output>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <e> pattern: (pat.Words words:[{<e>}]) middle: <Id.Right_CasePat _> action: [ (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: {<package>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) middle: <Id.Right_CasePat _> action: [ (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: {<prototyped>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <P> pattern: (pat.Words words:[{<P>}]) middle: <Id.Right_CasePat _> action: [ (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: {<pragma>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) middle: <Id.Right_CasePat _> action: [ (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: {<regress>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (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: {<shell>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <S> pattern: (pat.Words words:[{<S>}]) middle: <Id.Right_CasePat _> action: [ (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: {<static>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <O> pattern: (pat.Words words:[{<O>}]) middle: <Id.Right_CasePat _> action: [ (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: {<stdio>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) middle: <Id.Right_CasePat _> action: [ (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: {<undef>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) middle: <Id.Right_CasePat _> action: [ (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: {<verbose>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>}]) middle: <Id.Right_CasePat _> action: [ (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: {<cross>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <X> pattern: (pat.Words words:[{<X>}]) middle: <Id.Right_CasePat _> action: [ (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: {<exclude>} ) ] 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 ) (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 '*'> (DQ <' '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 )} {(DQ <'#'>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (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_DollarName arg)}) 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_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 '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_Number 1) ) } ) ] 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: [] ) ] 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: <all> pattern: (pat.Words words:[{<all>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'all='> name:all) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cc> pattern: (pat.Words words:[{<cc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'occ='> name:occ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName arg)}]) 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 occ)}) 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 x)}) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] 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 '`'> ) } ] 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: <export> more_env: [] words: [ {<export>} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-O> pattern: (pat.Words words: [{<-O> <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 optimize)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] 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 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] 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 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName occ) <' '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <exclude> more_env: [] words: [{<exclude>} {<occ>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <config> pattern: (pat.Words words:[{<config>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'config='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'config='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config='> name:config) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cross> pattern: (pat.Words words:[{<cross>}]) 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 )} {<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cross='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cross='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cross='> name: cross ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'cross='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cross='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cross='> name: cross ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName arg))} ) (AssignPair left: <Id.Lit_VarLike 'libpaths='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'libpaths='> name: libpaths ) 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: <debug> pattern: (pat.Words words:[{<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: {($ Id.VSub_DollarName arg)} ) ] 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: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<->}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'show='> name: show ) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHOW='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHOW='> name: SHOW ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<->}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'show='> name: show ) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHOW='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHOW='> name: SHOW ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <2> pattern: (pat.Words words:[{<2>} {<3>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'PS4="${PS4%+*([ \t])}+\\$LINENO+ "'>)} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'show='> name: show ) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHOW='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHOW='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHOW='> name: SHOW ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] 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>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName arg) <': debug levels are 0, 1, 2, 3'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <define> pattern: (pat.Words words:[{<define>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'define='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'define='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <exclude> pattern: (pat.Words words:[{<exclude>}]) 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 )} {<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'excludes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'excludes='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'excludes='> name: excludes ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'excludes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'excludes='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'excludes='> name: excludes ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName excludes) <' '> ($ Id.VSub_DollarName arg) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <exclude> more_env: [] words: [{<exclude>} {<includes>} {<occ>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <explicit> pattern: (pat.Words words:[{<explicit>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'explicit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'explicit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'explicit='> name: explicit ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <features> pattern: (pat.Words words:[{<features>}]) 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_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'tst='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tst='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tst='> name: tst ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'tst='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tst='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tst='> name: tst ) op: assign_op.Equal rhs: { (DQ <'#include '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] 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 <in>)} {<input>}]) 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 )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'in='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'in='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in='> name:in) op: assign_op.Equal rhs: {<->} ) ] 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 'in='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'in='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in='> name:in) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arg)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-r>} {($ Id.VSub_DollarName in)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName in) <': not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [11442 11453] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (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 in)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'file='> name: file ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName in) <Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName out)}) 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 in)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <.> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName in ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,.*[\\\\/],,'>)} {<-e>} {(SQ <'s/\\.[^.]*//'>)} {<-e>} {(SQ <'s/^/out=/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'out=${in##*[\\\\/]}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'out=${out%.*}'>)}] redirects: [] do_fork: T ) ] 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 '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_DollarName in)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <include> pattern: (pat.Words words:[{<include>}]) 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 )} {<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'includes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'includes='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'includes='> name: includes ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'includes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'includes='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'includes='> name: includes ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName includes) <' -I'> ($ Id.VSub_DollarName arg) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <exclude> more_env: [] words: [{<exclude>} {<includes>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <library> pattern: (pat.Words words:[{<library>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [y] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName libpaths)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName y) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ($ Id.VSub_DollarName y) <Id.Lit_Colon ':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <arg> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name y) <_default> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<export>} {($ Id.VSub_DollarName y)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <namval> pattern: (pat.Words words:[{<namval>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'define='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'define='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define) op: assign_op.Equal rhs: {<n>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nodebug> pattern: (pat.Words words:[{<nodebug>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<->}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nodefine> pattern: (pat.Words words:[{<nodefine>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'define='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'define='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nooptimize> pattern: (pat.Words words:[{<nooptimize>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'optimize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'optimize='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'optimize='> name: optimize ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName occ)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' -O'>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName occ)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/ -O[^ ]*//g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName occ)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <optimize> pattern: (pat.Words words:[{<optimize>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'optimize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'optimize='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'optimize='> name: optimize ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <out> pattern: (pat.Words words:[{<out>} {<output>}]) middle: <Id.Right_CasePat _> action: [ (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_DollarName arg)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'defhdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'defhdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'defhdr='> name:defhdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'deflib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'deflib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'deflib='> name:deflib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'one='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'one='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'one='> name:one) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'puthdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'puthdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'puthdr='> name:puthdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'putlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'putlib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'putlib='> name:putlib) 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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <output> pattern: (pat.Words words:[{<output>}]) 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 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test='> name:test) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <package> pattern: (pat.Words words:[{<package>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'protoflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'protoflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'protoflags='> name: protoflags ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName protoflags) <' -e '> ($ Id.VSub_DollarName arg) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <prototyped> pattern: (pat.Words words:[{<prototyped>} {<noprototyped>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pragma='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pragma='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pragma='> name:pragma) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pragma) <' '> ($ Id.VSub_DollarName op)) } ) ] 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: <prototyped> pattern: (pat.Words words:[{<prototyped>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'prototyped='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prototyped='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'prototyped='> name: prototyped ) 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.ShAssignment left: <Id.Lit_VarLike 'prototyped='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prototyped='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'prototyped='> name: prototyped ) 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: <pragma> pattern: (pat.Words words:[{<pragma>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pragma='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pragma='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pragma='> name:pragma) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pragma) <' '> ($ Id.VSub_DollarName arg) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <regress> pattern: (pat.Words words:[{<regress>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'regress='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'regress='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'regress='> name: regress ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'version='> name: version ) op: assign_op.Equal rhs: {<1995-03-19>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <shell> pattern: (pat.Words words:[{<shell>}]) 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: <osh> pattern: (pat.Words words:[{<osh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'posix_read='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'posix_read='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'posix_read='> name: posix_read ) op: assign_op.Equal rhs: {<-no>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'shell='> name: shell ) op: assign_op.Equal rhs: {<bsh>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arg)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <static> pattern: (pat.Words words:[{<static>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'static='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'static='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'static='> name:static) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arg)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <stdio> pattern: (pat.Words words:[{<stdio>}]) 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_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ext='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ext='> name: ext ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'ext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ext='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ext='> name: ext ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName arg)}]) 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 i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName ext)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) 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 '*'>}] ) 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.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#include '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<t.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-E>} {<t.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ext='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ext='> name: ext ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) ($ Id.VSub_DollarName sep) <'#include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] spids: [12125 12141] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <undef> pattern: (pat.Words words:[{<undef>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'undef='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'undef='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'undef='> name:undef) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <verbose> pattern: (pat.Words words:[{<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: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] 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 command) <': '> ($ Id.VSub_DollarName op) <': unknown option'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <api> pattern: (pat.Words words: [ {<api>} {<define>} {<extern>} {<header>} {<include>} {<print>} {<reference>} {<ver>} ] ) middle: <Id.Right_CasePat _> action: [ (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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (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: (rhs_word__Empty) ) ] 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_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'='>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <->)} {(SQ <'?'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'def='> name: def ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'def='> name: def ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'!'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'not='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'not='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'not='> name:not) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 'not='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'not='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'not='> name:not) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (SQ <'{'>)}]) middle: <Id.Right_CasePat _> action: [ (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: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'('>) <Id.Lit_Star '*'>} {(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>)} {(SQ <'<'>) <Id.Lit_Star '*'> (SQ <'>'>)} ] ) middle: <Id.Right_CasePat _> action: [ (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: {<exp>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName def)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'def='> name: def ) op: assign_op.Equal rhs: {<->} ) ] 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 '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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.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: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName occ) <' '> ($ Id.VSub_DollarName includes))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'group='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'group='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'groups='> name:groups) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'fail='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fail='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fail='> name:fail) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdr='> name:hdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lib='> name:lib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mac='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mac='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mac='> name:mac) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'no='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'no='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'no='> name:no) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'note='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'note='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'note='> name:note) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pass='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pass='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pass='> name:pass) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run='> name:run) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'src='> name:src) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test='> name:test) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'yes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yes='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yes='> name:yes) 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_Pound '#')}) 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.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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ref> pattern: (pat.Words words:[{<ref>}]) 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <->)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName op) <Id.Lit_Colon ':'> ($ Id.VSub_Number 2) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <tst> pattern: (pat.Words words: [ {<tst> <Id.Lit_Colon ':'> <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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 2)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] 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 '*'> <Id.Lit_Colon ':'> <-> <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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'def='> name: def ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'('>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <'{'>)} {(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>) } {(SQ <'<'>) <Id.Lit_Star '*'> (SQ <'>'>) } ] ) 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: {<->} ) ] 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 '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_Pound '#')} ) 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: <shift> more_env: [] words: [{<shift>}] redirects: [] 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.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Other '+'> <Id.Lit_Star '*'>} {(SQ <'('>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <'{'>)} {(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>)} {(SQ <'<'>) <Id.Lit_Star '*'> (SQ <'>'>)} ] ) 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: {<->} ) ] 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 '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.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] 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.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.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'('>) <Id.Lit_Star '*'>} {(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>)} {(SQ <'<'>) <Id.Lit_Star '*'> (SQ <'>'>)} ] ) middle: <Id.Right_CasePat _> action: [ (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_LBracket '['> <.> <Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName test)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) 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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName test) <' '> ($ Id.VSub_Number 1) ) } ) ] 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 arg)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) 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: {<->} ) ] 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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <exp> pattern: (pat.Words words:[{<exp>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName def)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <->)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '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 def)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sline='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sline='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sline='> name:sline) op: assign_op.Equal rhs: {($ Id.VSub_DollarName line)} ) ] 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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'='>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (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: {($ Id.VSub_Star '*')} ) ] 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.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: {(DQ <' '>)} ) ] 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.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> (SQ <'{'>) } {(SQ <'{'>)} ] ) middle: <Id.Right_CasePat _> action: [ (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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) 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 v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'note{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] 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 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] 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 v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {(SQ <'}'>)} ) ] 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 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {(SQ <'}end'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SEP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SEP='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SEP='> name: SEP ) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName posix_read ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [{<-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <checkread> more_env: [] words: [{<checkread>}] 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 in)} ) 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: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command ) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': missing }end'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName stderr ) } ) ] 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.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_DollarName posix_read ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <read> more_env: [ (EnvPair left: < Id.Lit_VarLike 'IFS=' > name: IFS val: (rhs_word__Empty) ) ] words: [ {<read>} {<-r>} {<lin>} ] redirects: [] do_fork: T ) (command.ShAssignment left: < Id.Lit_VarLike 'eof=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'eof=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'eof=' > name: eof ) op: assign_op.Equal rhs: { ($ Id.VSub_QMark '?' ) } ) ] 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.ShAssignment left: < Id.Lit_VarLike 'lin=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'lin=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'lin=' > name: lin ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: < Id.Left_DollarBrace '${' > token: < Id.VSub_Name lin > var_name: lin suffix_op: (suffix_op.Unary op: < Id.VOp1_Pound '#' > arg_word: { < '[' > (SQ <' \t'>) <']'> } ) right: < Id.Right_DollarBrace '}' > ) ) } ) ] redirects: [] ) (command.Case case_kw: < Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName lin ) } ) arms_start: < Id.KW_In in > arms: [ (CaseArm left: < Id.Lit_LBracket '[' > pattern: (pat.Words words: [ { < Id.Lit_LBracket '[' > (SQ <' \t'>) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> (SQ <'#'>) <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_Break break > ) ] right: < Id.Op_DSemi _ > ) ] arms_end: < Id.KW_Esac esac > redirects: [] ) ] right: < Id.KW_Done done > ) 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 '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: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<-r>} {<lin>} ] redirects: [] do_fork: T ) (command.ShAssignment left: < Id.Lit_VarLike 'eof=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'eof=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'eof=' > name: eof ) op: assign_op.Equal rhs: { ($ Id.VSub_QMark '?' ) } ) ] 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 lin ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Lit_LBracket '[' > pattern: (pat.Words words: [ { < Id.Lit_LBracket '[' > (SQ <' \t'>) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'lin=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'lin=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'lin=' > name: lin ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { < -e > } { (SQ < 's,^[ \t],,' > ) } { < -e > } { (SQ < 's,^[ \t]*#,#,' > ) } ] redirects: [ (Redir op: < Id.Redir_DLess '<<' > loc: (redir_loc.Fd fd: 0 ) arg: (redir_param.HereDoc here_begin: { < Id.KW_Bang '!' > } here_end_tok: < Id.Undefined_Tok '' > stdin_parts: [ ($ Id.VSub_DollarName lin ) < '\n' > ] ) ) ] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lin=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'lin=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'lin=' > name: lin ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < Id.VSub_DollarName '$posix_read' > more_env: [] words: [ { ($ Id.VSub_DollarName posix_read ) } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'eof=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'eof=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'eof=' > name: eof ) op: assign_op.Equal rhs: { ($ Id.VSub_QMark '?' ) } ) ] 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 eof ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [{<0>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <let> more_env: [] words: [ {<let>} { < Id.Lit_VarLike 'line=' > <line> <Id.Lit_Other '+'> <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.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: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < expr > more_env: [] words: [ { < expr > } { ($ Id.VSub_DollarName line ) } { < Id.Lit_Other '+' > } { < 1 > } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$posix_noglob' > more_env: [] words: [ { ($ Id.VSub_DollarName posix_noglob ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<x>} { ($ Id.VSub_DollarName lin ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$posix_glob' > more_env: [] words: [ { ($ Id.VSub_DollarName posix_glob ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_Number 2 ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$v' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName v ) } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [ { < ksh > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < let > more_env: [] words: [ { < let > } { < Id.Lit_VarLike 'n=' > <n> <Id.Lit_Other '+'> <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.ShAssignment left: < Id.Lit_VarLike 'n=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'n=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'n=' > name: n ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < expr > more_env: [] words: [ { < expr > } { ($ Id.VSub_DollarName n ) } { < Id.Lit_Other '+' > } { < 1 > } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: < Id.VSub_DollarName '$e' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName e ) } { ($ Id.VSub_DollarName e ) (SQ <';'>) } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName n ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1>} ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < shift > more_env: [] words: [ { < shift > } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > arg_word: {<2>} ) ] 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 shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [ { < ksh > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < let > more_env: [] words: [ { < let > } { < Id.Lit_VarLike 'n=' > <n-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.ShAssignment left: < Id.Lit_VarLike 'n=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'n=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'n=' > name: n ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < expr > more_env: [] words: [ { < expr > } { ($ Id.VSub_DollarName n ) } { < - > } { < 1 > } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x ) ($ Id.VSub_DollarName SEP) ($ Id.VSub_DollarName lin) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SEP=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'SEP=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'SEP=' > name: SEP ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName sep ) } ) ] 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: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command ) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': missing '> ($ Id.VSub_DollarName e) ) } ] redirects: [ (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName stderr ) } ) ] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Exit exit > arg_word: {<1>} ) ] 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.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.VSub_DollarName '$v'> pattern: (pat.Words words: [{($ Id.VSub_DollarName v)}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <let> more_env: [] words: [ {<let>} {<Id.Lit_VarLike 'n='> <n> <Id.Lit_Other '+'> <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.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} { ($ Id.VSub_DollarName n ) } { < Id.Lit_Other '+' > } {<1>} ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$e'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName e)} {($ Id.VSub_DollarName e) (SQ <';'>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName n)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) 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_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <let> more_env: [] words: [ {<let>} {<Id.Lit_VarLike 'n='> <n-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.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} { ($ Id.VSub_DollarName n ) } {<->} {<1>} ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName SEP) ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SEP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SEP='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SEP='> name: SEP ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName sep)} ) ] 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 v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'note{'>)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName nl) ) } ) ] redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'fail{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fail='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fail='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fail='> name: fail ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'nofail{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pass='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pass='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pass='> name: pass ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'v='> name: v ) op: assign_op.Equal rhs: {(SQ <'pass{'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'nopass{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fail='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fail='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fail='> name: fail ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'v='> name: v ) op: assign_op.Equal rhs: {(SQ <'fail{'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'no{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'no='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'no='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'no='> name: no ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'note{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'note='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'note='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'note='> name: note ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'pass{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pass='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pass='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pass='> name: pass ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'test{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ <'yes{'>)} {(SQ <'{'>)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'yes='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yes='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'yes='> name: yes ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] 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 'src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'src='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'src='> name: src ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) (AssignPair left: <Id.Lit_VarLike 'run='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'run='> name: run ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\('> ch: '(' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\{'> ch: '{' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\}'> ch:'}') (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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName test)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) 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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName test) <' '> ($ 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: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'group='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'group='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'group='> name: group ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName group) ($ Id.VSub_Number 1) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'com_hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_hdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_hdr='> name: com_hdr ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName hdr)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'com_lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_lib='> name: com_lib ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName lib)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'com_mac='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_mac='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_mac='> name: com_mac ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mac)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'com_opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_opt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_opt='> name: com_opt ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName opt)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'com_pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_pth='> name: com_pth ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName pth)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'com_test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'com_test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'com_test='> name: com_test ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName test)} ) ] 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 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-l> pattern: (pat.Words words:[{<-l> <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 group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words: [{<Id.Lit_Other '+'> <l> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s/X+/-/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'x=-${1#+}'>)}] 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 group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ Id.VSub_DollarName x) ) } ) ] 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Other '+'> <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 op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ref> pattern: (pat.Words words:[{<ref>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cc='> name: cc ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cc) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'occ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'occ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'occ='> name: occ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName occ) <' '> ($ Id.VSub_Number 1) ) } ) ] 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: <-L> pattern: (pat.Words words: [{<-L> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) 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_Pound '#' > arg_word: {<-L>} ) 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.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<x> ($ Id.VSub_Number 1 ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,^x-L,,' > ) } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [y] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName libpaths)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName y) <Id.Lit_Equals '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$' > ch: '$' ) ($ Id.VSub_DollarName y) <Id.Lit_Colon ':'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$' > ch: '$' ) <x> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') (${ Id.VSub_Name y) <_default> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"' > ch: '"' ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<export>} {($ Id.VSub_DollarName y)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <run> pattern: (pat.Words words: [{<run>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'opt=' > name: opt ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName opt ) <' '> ($ 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.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: <-D> pattern: (pat.Words words: [ {<-D> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mac=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'mac=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'mac=' > name: mac ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName mac ) <' '> ($ 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 'cc=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'cc=' > name: cc ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cc ) <' '> ($ 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: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <aAxX> <Id.Lit_RBracket ']'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <dD> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <iI> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <bB> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_Number 1) ) } ) ] 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 '*'> <Id.Lit_LBracket '['> <.> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <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 group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hdr='> name: hdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName hdr) <' '> ($ 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: [] ) ] 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 group)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<--> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName test)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test=' > name: test ) 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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test=' > name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName test ) <' '> ($ 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: [] ) ] 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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'group='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'group='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'group='> name: group ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ifelse)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <DONE> pattern: (pat.Words words:[{<DONE>} {<SKIP>}]) middle: <Id.Right_CasePat _> action: [(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 cc)}) 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 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName occ) <' '> ($ Id.VSub_DollarName includes))} ) ] 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 cctest)}) 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: <checkcc> more_env: [] words: [{<checkcc>}] 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)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (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: <api> pattern: (pat.Words words:[{<api>}]) 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: {<->} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1) <Id.Lit_Colon ':'> ($ Id.VSub_Number 2)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName apis) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName a) <' '>) <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_VarLike 'apis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'apis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'apis='> name: apis ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName apis) <' '> ($ Id.VSub_DollarName a) ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<api_sym_> (${ Id.VSub_Name a) <Id.Lit_Equals '='>} {<api_ver_> (${ Id.VSub_Name a) <Id.Lit_Equals '='>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rel='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) 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_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rel='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName rel) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.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_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'syms='> (SQ <'$'>) <api_sym_> (${ Id.VSub_Name a) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName syms)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {(SQ )} ) ] 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 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [r] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName rel)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'syms='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'syms='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'syms='> name: syms ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName syms) ($ Id.VSub_DollarName sep) (${ Id.VSub_Number 1) <Id.Lit_Colon ':'> (${ Id.VSub_Name r) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<api_sym_> (${ Id.VSub_Name a) <Id.Lit_Equals '='> (SQ <'$'>) <syms> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) 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: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName op) <': expected: name YYYYMMDD symbol ...'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] 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.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_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <iff> pattern: (pat.Words words:[{<iff>} {<ini>}]) 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: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <comment> pattern: (pat.Words words:[{<comment>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <copy> more_env: [] words: [{<copy>} {<->} {(DQ <'/* '> ($ Id.VSub_Star '*') <' */'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <define> pattern: (pat.Words words:[{<define>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ <'('>) <Id.Lit_Star '*'> (SQ <')'>)}] ) 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_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName in)}) 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 '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: (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.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <':'>)}]) 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 '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: { (DQ ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) 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 '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: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<mac>} {($ Id.VSub_DollarName x)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> <'#ifndef '> ($ Id.VSub_DollarName x) <'\n'> <'(\n'> <'#endif\n'> <'int x;\n'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<->}] redirects: [] do_fork: T ) ] spids: [15579 15597] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'#define '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName arg) <'\t'> ($ Id.VSub_DollarName v) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) (${ Id.VSub_Name nl) <'#define '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName arg) <' '> ($ Id.VSub_DollarName v) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <extern> pattern: (pat.Words words:[{<extern>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<npt>} {($ Id.VSub_DollarName x)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName std) <'\n'> <'#include <sys/types.h>\n'> ($ Id.VSub_DollarName usr) <'\n'> <'_BEGIN_EXTERNS_\n'> <'struct _iffe_struct { int _iffe_member; };\n'> <'extern struct _iffe_struct* '> ($ Id.VSub_DollarName x) <' _ARG_((struct _iffe_struct*));\n'> <'_END_EXTERNS_\n'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName cc) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' -O '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'xx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'xx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'xx='> name:xx) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName cc)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/ -O / /g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'xx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'xx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'xx='> name:xx) op: assign_op.Equal rhs: {($ Id.VSub_DollarName cc)} ) ] 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: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName xx)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<->}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {(SQ <'('>) <Id.Lit_Star '*'>} {(SQ <'['>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName t) <' '> ($ Id.VSub_Number 1) ) } ) ] 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 in)}) 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 '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: (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.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName t)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <':'>)}]) 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 '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: { (DQ ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) 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 '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: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'extern '> ($ Id.VSub_DollarName t) <'\t'> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <';'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName prototyped)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr='> name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) (${ Id.VSub_Name nl) <'extern '> ($ Id.VSub_DollarName t) <' '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <';'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [15746 15764] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<->}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName in)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (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.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <':'>)}]) 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: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <header> pattern: (pat.Words words:[{<header>} {<include>} {<reference>}]) middle: <Id.Right_CasePat _> action: [ (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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <':'>)}]) 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: {(DQ <' '> ($ Id.VSub_DollarName gothdr) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' - '> ($ Id.VSub_DollarName x) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' + '> ($ Id.VSub_DollarName 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 usr)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <'# include <'>) ($ Id.VSub_DollarName x) (DQ <'>'>) <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 op)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <reference> pattern: (pat.Words words:[{<reference>}]) 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: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr='> name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) (${ Id.VSub_Name nl) <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ) ] 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.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> <'#include <'> ($ Id.VSub_DollarName x) <'>\n'> <'int x;\n'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_hdr> more_env: [] words: [ {<is_hdr>} {<->} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' + '> ($ Id.VSub_DollarName x) ) } ) ] 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: <reference> pattern: (pat.Words words:[{<reference>}]) 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: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr='> name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) (${ Id.VSub_Name nl) <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ) ] redirects: [] ) ] spids: [16252 16261] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' - '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <print> pattern: (pat.Words words:[{<print>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName in)}) 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 '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: (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.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <':'>)}]) 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 '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: { (DQ ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) 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 '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: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [{<copy>} {<->} {(DQ ($ Id.VSub_Star '*'))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) (${ Id.VSub_Name nl) ($ Id.VSub_DollarName v) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <ver> pattern: (pat.Words words:[{<ver>}]) 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: {<->} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1) <Id.Lit_Colon ':'> ($ Id.VSub_Number 2)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'vers='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'vers='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'vers='> name: vers ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName vers) ($ Id.VSub_DollarName nl) ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<ver_> ($ Id.VSub_Number 1) <Id.Lit_Equals '='> ($ Id.VSub_Number 2) } ] 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>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName op) <': expected: name YYYYMMDD'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] 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.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_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] 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 ext)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <'<stdio.h>'>) <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 ext)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <'#define NOTE('>) <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_VarLike 'ext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ext='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) <'\n'> <'#define NOTE(s)\tdo{write(9,'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <',1);write(9,s,strlen(s));write(9,'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' ...'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <',4);}while(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.ShAssignment left: <Id.Lit_VarLike 'argx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argx='> name:argx) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'argv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argv='> name:argv) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] 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.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cc) <' '> ($ Id.VSub_DollarName mac))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName hdrtest)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hdrtest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdrtest='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hdrtest='> name: hdrtest ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'allinc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'allinc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'allinc='> name:allinc) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words:[{<types>}]) 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 config)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<_sys_> (${ Id.VSub_Name x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName x) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<HAVE_SYS_> (${ Id.VSub_Name u) <_H>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {<'sys/'> ($ Id.VSub_DollarName x) <.h>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name allinc) <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_hdr> more_env: [] words: [{<is_hdr>} {($ Id.VSub_DollarName x)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' + '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName explicit)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t1\t/* #include <'> ($ Id.VSub_DollarName x) <'> ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=1'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName c) <Id.Lit_Equals '='> <1>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'allinc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'allinc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'allinc='> name: allinc ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name allinc) <'#include <'> ($ Id.VSub_DollarName x) <'>'> ($ Id.VSub_DollarName nl) ) } ) ] redirects: [] ) ] spids: [16869 16876] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' - '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName explicit) ($ Id.VSub_DollarName all) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [ {<0> <Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'>} {<0> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#undef\t'> ($ Id.VSub_DollarName c) <'\t\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'='> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <01> pattern: (pat.Words words: [{<01> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t0\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=0'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.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: <npt> pattern: (pat.Words words:[{<npt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdr='> name:hdr) op: assign_op.Equal rhs: { (DQ <'sys/types.h stdlib.h unistd.h '> ($ Id.VSub_DollarName hdr) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <siz> pattern: (pat.Words words:[{<siz>} {<typ>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdr='> name:hdr) op: assign_op.Equal rhs: { (DQ < 'sys/types.h time.h sys/time.h sys/times.h stddef.h stdlib.h ' > ($ Id.VSub_DollarName hdr) ) } ) ] 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 hdr)}) 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 '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: {($ Id.VSub_DollarName hdr)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdr='> name:hdr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dis='> name:dis) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName z)}]) 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 x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.h>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName gothdr) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' - '> ($ Id.VSub_DollarName x) <' '>) <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 '*'> (DQ <' + '> ($ Id.VSub_DollarName x) <' '>) <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,^\\([^\\\\/]*\\).*[\\\\/]\\([^\\\\/]*\\)$,\\1_\\2,' > ) } {<-e>} {(SQ <'s/\\..*//'>)} {<-e>} {(SQ <'s/^/c=/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'c=${x##*[\\\\/]}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'c=${c%%.*}'>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (SQ < 'c=${x%%[\\\\/]*}_${c}' > ) } ] redirects: [] 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: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName explicit)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dis='> name: dis ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dis=' > name: dis ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName c) } ) ] 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 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dis=' > name: dis ) op: assign_op.Equal rhs: {<hdr>} ) ] 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_Name dis) <Id.Lit_Underscore _> } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DollarBrace '${'> pattern: (pat.Words words: [ {(${ Id.VSub_Name op) <Id.Lit_Underscore _> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dis=' > name: dis ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dis='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dis='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dis=' > name: dis ) op: assign_op.Equal rhs: {<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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name c) } ) ] 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 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<_hdr_> (${ Id.VSub_Name c) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName c) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<HAVE_> (${ Id.VSub_Name u) <_H>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name allinc) <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_hdr> more_env: [] words: [ {<is_hdr>} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' + '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName dis)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can=' > name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can ) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t1\t/* #include <'> ($ Id.VSub_DollarName x ) <'> ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan=' > name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan ) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=1'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep=' > name: cansep ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName nl ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName c) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) ] spids: [17527 17534] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr='> name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr) <' - '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName dis) ($ Id.VSub_DollarName all) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [ {<0> <Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'> } {<0> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#undef\t'> ($ Id.VSub_DollarName c) <'\t\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'='> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep=' > name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <01> pattern: (pat.Words words: [ {<01> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t0\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=0'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep=' > name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] fi_kw: <Id.KW_Fi fi> 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: <test> more_env: [] words: [{<test>} {<-r>} {($ Id.VSub_DollarName x)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hdr='> name: hdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName hdr) <' '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lib)}) 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 '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: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [p] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName lib)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (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: { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName z) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lib='> name:lib) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'int main(){return(0);}'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName z)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName gotlib) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <'- '> ($ Id.VSub_DollarName p) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<Id.Lit_Other '+'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <'+ '> ($ Id.VSub_DollarName p) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<Id.Lit_Other '+'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName lib) ) } ) ] 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: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<LIB>} {($ Id.VSub_DollarName p)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} {($ Id.VSub_DollarName p)} {($ Id.VSub_DollarName lib)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'gotlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gotlib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gotlib='> name: gotlib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gotlib) <' + '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName lib) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [17895 17920] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [l] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName z)}] ) 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 l)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue > ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$p'> pattern: (pat.Words words: [{($ Id.VSub_DollarName p)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue > ) ] 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 gotlib ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName l ) <' '> ) <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: [] ) ] 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 a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$p'> pattern: (pat.Words words: [{($ Id.VSub_DollarName p)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName a) <' '> ($ Id.VSub_DollarName l) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.c> } { ($ Id.VSub_DollarName a ) } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'gotlib=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'gotlib=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gotlib=' > name: gotlib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gotlib ) <' + '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib=' > name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName p ) <' '> ($ Id.VSub_DollarName lib) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break > ) ] spids: [18048 18071] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName e)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'gotlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gotlib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gotlib='> name: gotlib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gotlib) <' - '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'y='> name: y ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName p)}] ) 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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s,X-l,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'c=${x#-l}'>)}] 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 c)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ )} { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,.*[\\\\/],,' > ) } {<-e>} { (SQ < 's,\\.[^.]*$,,' > ) } {<-e>} { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' > ) } {<-e>} { (SQ < '/^lib./s,^lib,,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName e) ($ Id.VSub_DollarName p) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [ {<0> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName gotlib ) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '[' > <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> (DQ <' '> ($ Id.VSub_DollarName x) <' '>) <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_VarLike 'can=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'can=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'can=' > name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can ) ($ Id.VSub_DollarName cansep) <'#define _LIB_'> ($ Id.VSub_DollarName c) <'\t1\t/* '> ($ Id.VSub_DollarName x ) <' is a library */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'nan=' > name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan ) (${ Id.VSub_Name cansep) <_LIB_> ($ Id.VSub_DollarName c) <'=1'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'cansep=' > name: cansep ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName nl ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_LIB_> ($ Id.VSub_DollarName c ) <Id.Lit_Equals '='> <1> } ] redirects: [] 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.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName c) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName u)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName e)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [ {<0> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName gotlib ) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '[' > <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> (DQ <' '> ($ Id.VSub_DollarName x) <' '>) <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_VarLike 'can=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'can=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'can=' > name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can ) ($ Id.VSub_DollarName cansep) <'#define HAVE_'> (${ Id.VSub_Name c) <'_LIB\t1\t/* '> ($ Id.VSub_DollarName x ) <' is a library */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'nan=' > name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan ) (${ Id.VSub_Name cansep) <HAVE_> (${ Id.VSub_Name c) <'_LIB=1'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'cansep=' > name: cansep ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName nl ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<HAVE_> (${ Id.VSub_Name c) <Id.Lit_VarLike '_LIB='> <1> } ] redirects: [] 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.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'y='> name: y ) op: assign_op.Equal rhs: {(${ Id.VSub_Name y) <Id.Lit_Underscore _> ($ Id.VSub_DollarName c) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<_LIB> (${ Id.VSub_Name y)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name y) <_LIB>} ) ] 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 p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'q='> name: q ) op: assign_op.Equal rhs: {(DQ <'a library group'>)} ) ] 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 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'q='> name: q ) op: assign_op.Equal rhs: {(DQ <'a library'>)} ) ] 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 e)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t1\t/* '> ($ Id.VSub_DollarName p) <' is '> ($ Id.VSub_DollarName q) <' */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=1'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName c) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName hit)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) 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.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName all) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#undef\t'> ($ Id.VSub_DollarName c) <'\t\t/* '> ($ Id.VSub_DollarName p) <' is not '> ($ Id.VSub_DollarName q) <' */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'='> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName can) ($ Id.VSub_DollarName cansep) <'#define '> ($ Id.VSub_DollarName c) <'\t0\t/* '> ($ Id.VSub_DollarName p) <' is not '> ($ Id.VSub_DollarName q) <' */'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nan) ($ Id.VSub_DollarName cansep) ($ Id.VSub_DollarName c) <'=0'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName c) <Id.Lit_Equals '='> <0> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] 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.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: <ref> pattern: (pat.Words words:[{<ref>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'deflib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'deflib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'deflib='> name:deflib) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName deflib) <' '> ($ Id.VSub_DollarName lib) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'defhdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'defhdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'defhdr='> name:defhdr) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName defhdr) <' '> ($ Id.VSub_DollarName hdr) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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: {(DQ <' ,'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bash> pattern: (pat.Words words:[{<bash>}]) middle: <Id.Right_CasePat _> action: [ (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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName op)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] 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: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName arg)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'op='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName op) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'arg='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [o] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName op)}]) 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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <def> pattern: (pat.Words words:[{<def>} {<default>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x) <' cmd dat hdr key lib mth sys typ'> ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x) <' '> ($ Id.VSub_DollarName o) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {<UNKNOWN>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [o] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName x)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName arg)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) 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 a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <.> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <hdr> pattern: (pat.Words words: [{<hdr>} {<lcl>} {<nxt>} {<pth>} {<sys>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.lcl>} {<Id.Lit_Star '*'> <.nxt>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sys> pattern: (pat.Words words: [{<sys>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<'sys/'> ($ Id.VSub_DollarName x) } ) ] 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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words: [{<bsh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\(.*\\)\\.\\([^.]*\\),x=\\1 o=\\2,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'o='> name: o ) op: assign_op.Equal rhs: { (BracedVarSub left: < Id.Left_DollarBrace '${' > token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: < Id.VOp1_DPound '##' > arg_word: { < Id.Lit_Other '*' > <.> } ) right: < Id.Right_DollarBrace '}' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (BracedVarSub left: < Id.Left_DollarBrace '${' > token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: < Id.VOp1_Percent '%' > arg_word: {<.> (${ Id.VSub_Name o ) } ) right: < Id.Right_DollarBrace '}' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: {($ Id.VSub_DollarName x)} ) ] 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 x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words: [{<bsh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\(.*\\)[\\\\//]\\(.*\\),p=\\1 v=\\2,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'p=${x%/*}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'v=${x##*/}'>)} ] redirects: [] do_fork: T ) ] 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 '*'> <.> <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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words: [{<bsh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\(.*\\)\\.\\(.*\\),p=\\1 v=\\2,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'p=${x%.*}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'v=${x##*.}'>)} ] redirects: [] do_fork: T ) ] 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 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words: [{<lcl>} {<nxt>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v) <.> ($ Id.VSub_DollarName o) } ) ] 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 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName a ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,.*[\\\\/],,'>)} {<-e>} { (SQ < 's/\\(.*\\)\\.\\(.*\\)/p=\\1 v=\\2/' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'p=${a%.*}'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'p=${p##*[\\\\/]}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'v=${a##*.}'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'v=${v##*[\\\\/]}'>)} ] redirects: [] 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: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {(${ Id.VSub_Name v)} ) ] 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 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {(${ Id.VSub_Name p) <'/'> (${ Id.VSub_Name v) } ) ] 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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <run> pattern: (pat.Words words:[{<run>}]) middle: <Id.Right_CasePat _> action: [ (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: {($ Id.VSub_DollarName p)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name v) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mem> pattern: (pat.Words words:[{<mem>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName p)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words: [{<bsh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName p ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's/\\([^.]*\\)\\.\\(.*\\)/p=\\1 m=\\2/' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'m=${p#*.}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'p=${p%%.*}'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: {(${ Id.VSub_Name m) <.> (${ Id.VSub_Name v) } ) ] redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name v) <Id.Lit_Underscore _> (${ Id.VSub_Name p) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name v) <_in_> (${ Id.VSub_Name p) } ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName p)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name v) } ) ] 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 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name p) <Id.Lit_Underscore _> (${ Id.VSub_Name v) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (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: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name v)} ) ] 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 c)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'M='> name:M) op: assign_op.Equal rhs: {($ Id.VSub_DollarName m)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <out> pattern: (pat.Words words:[{<out>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName a) <' '> ($ Id.VSub_DollarName test) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName idyes) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName m) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName idno) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName m) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName m)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (SQ <'*'>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName m ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\*,_ptr,g' > ) } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] 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 m)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <'/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<id>} {($ Id.VSub_DollarName m)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c> } { (DQ <'int '> ($ Id.VSub_DollarName m) <' = 0;'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<->}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'idyes=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'idyes=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'idyes=' > name: idyes ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName idyes ) <' '> ($ Id.VSub_DollarName m) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [19997 20009] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<->}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'idno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'idno=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'idno=' > name: idno ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName idno ) <' '> ($ Id.VSub_DollarName m) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> 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 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <dat> pattern: (pat.Words words: [ {<dat>} {<dfn>} {<key>} {<lib>} {<mac>} {<mth>} {<nos>} {<npt>} {<siz>} {<sym>} {<typ>} {<val>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue > ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] 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 m)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <X> ($ Id.VSub_DollarName m))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^.,,'>)} {<-e>} { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 out)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$cur'> pattern: (pat.Words words:[{($ Id.VSub_DollarName cur)}]) 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 cur)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$a'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName a)} {($ Id.VSub_DollarName c)} ] ) 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 cur)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) 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 vers)} ) 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.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [api] iterable: (for_iter.Words words: [ { ($ Id.VSub_DollarName vers ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'API=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'API=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'API=' > name: API ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName api ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < tr > more_env: [] words: [ { < tr > } { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { <Id.Lit_VarLike 'ver=' > (SQ <'${'>) <ver_> (${ Id.VSub_Name api) (SQ <'}'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> (${ Id.VSub_Name API ) <'_VERSION\t'> (${ Id.VSub_Name ver) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName apis)} ) 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.ForEach keyword: <Id.KW_For for> iter_names: [api] iterable: (for_iter.Words words: [ { ($ Id.VSub_DollarName apis ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'API=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'API=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'API=' > name: API ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName api ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < tr > more_env: [] words: [ { < tr > } { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> (${ Id.VSub_Name API ) <'API(rel)\t( _BLD_'> (${ Id.VSub_Name api) <' || !_API_'> (${ Id.VSub_Name api) <' || _API_'> (${ Id.VSub_Name api ) <' >= rel )'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'map=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'map=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'map=' > name: map ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'sep=' > name: sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { <Id.Lit_VarLike 'syms=' > (SQ <'"${'>) <api_sym_> (${ Id.VSub_Name api) (SQ <'}"'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<x>} {<x>} { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ { < echo > } { (DQ ($ Id.VSub_DollarName syms ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [ { < sort > } {<-t> < Id.Lit_Colon ':' > } {<-u>} {<-k>} {<1> < Id.Lit_Comma ',' > <1> } {<-k>} {<2> < Id.Lit_Comma ',' > <2nr> } ] redirects: [ (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { < '/dev/null' > } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's/:/ /' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ] redirects: [] do_fork: T ) (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: <2> pattern: (pat.Words words: [{<2>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<x>} {<x>} { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ ($ Id.VSub_DollarName syms ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < sort > more_env: [] words: [ { < sort > } { < -t > <Id.Lit_Colon ':'> } { < -u > } { < Id.Lit_Other '+' > <0> } { < -1 > } { < Id.Lit_Other '+' > <1> } { < -2nr > } ] redirects: [ (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { < '/dev/null' > } ) ] do_fork: T ) (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { (SQ < 's/:/ /' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sym=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'sym=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'sym=' > name: sym ) 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.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} {<2>} ] redirects: [] do_fork: T ) (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: < Id.Lit_LBracket '[' > pattern: (pat.Words words: [ { < Id.Lit_LBracket '[' > <01> <Id.Lit_RBracket ']'> } ] ) 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 'prv=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'prv=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'prv=' > name: prv ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName sym ) } ) ] redirects: [] ) (command.ShAssignment left: < Id.Lit_VarLike 'sym=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'sym=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'sym=' > name: sym ) op: assign_op.Equal rhs: { ($ Id.VSub_Number 1 ) } ) ] redirects: [] ) (command.ShAssignment left: < Id.Lit_VarLike 'rel=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'rel=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'rel=' > name: rel ) op: assign_op.Equal rhs: { ($ Id.VSub_Number 2 ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName prv ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$sym' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName sym ) } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#elif _API_' > (${ Id.VSub_Name api) <' >= '> ($ Id.VSub_DollarName rel) ) } ] 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 prv ) } ) arms_start: < Id.KW_In in > arms: [ (CaseArm left: < Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [{(SQ )}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#if !defined(_API_' > (${ Id.VSub_Name api) <') && defined(_API_DEFAULT)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#define _API_' > (${ Id.VSub_Name api) <'\t_API_DEFAULT'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#endif' > ) } ] 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 > } { (DQ < '#endif' > ) } ] redirects: [] do_fork: T ) ] right: < Id.Op_DSemi _ > ) ] arms_end: < Id.KW_Esac esac > redirects: [] ) (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#if ' > (${ Id.VSub_Name API) <'API('> ($ Id.VSub_DollarName rel) <')'> ) } ] redirects: [] do_fork: T ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '#undef\t' > (${ Id.VSub_Name sym) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '#define ' > (${ Id.VSub_Name sym) <'\t'> (${ Id.VSub_Name sym) <_> (${ Id.VSub_Name rel) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: < Id.Lit_VarLike 'map=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'map=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'map=' > name: map ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName map ) ($ Id.VSub_DollarName sep) (${ Id.VSub_Name sym) <Id.Lit_Underscore _> (${ Id.VSub_Name rel) } ) ] redirects: [] ) (command.ShAssignment left: < Id.Lit_VarLike 'sep=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'sep=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'sep=' > name: sep ) op: assign_op.Equal rhs: { (SQ < ' ' > ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'#endif'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '#define _API_' > (${ Id.VSub_Name api) <'_MAP\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName map ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] 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 iff)} ) 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.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#endif'>)}] 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 cur)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) 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: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName cur ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '[' > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <.h> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName cur ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName dir ) <'/'> ($ Id.VSub_DollarName cur) } ) ] 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 define ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <n> pattern: (pat.Words words: [{<n>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'/^#/d'>)} { ($ Id.VSub_DollarName tmp ) <.h> } ] redirects: [ (Redir op: <Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.c> } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'/^#/d'>)} { ($ Id.VSub_DollarName x ) } ] redirects: [ (Redir op: <Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.t> } ) ] 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.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <proto> more_env: [] words: [ {<proto>} {<-r>} { ($ Id.VSub_DollarName protoflags ) } { ($ Id.VSub_DollarName tmp ) <.h> } ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: {<'/dev/null'>} ) (Redir op: < Id.Redir_GreatAnd '2>&' > loc: (redir_loc.Fd fd: 2 ) arg: {<1>} ) ] ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,/\\*[^/]*\\*/, ,g' > ) } { ($ Id.VSub_DollarName tmp ) <.h> } ] redirects: [ (Redir op: <Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.c> } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,/\\*[^/]*\\*/, ,g' > ) } { ($ Id.VSub_DollarName x ) } ] redirects: [ (Redir op: <Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.t> } ) ] 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.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} { ($ Id.VSub_DollarName tmp ) <.c> } { ($ Id.VSub_DollarName tmp ) <.t> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} { ($ Id.VSub_DollarName tmp ) <.h> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName verbose ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command ) <': '> ($ Id.VSub_DollarName x) <': unchanged'> ) } ] redirects: [ (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName stderr ) } ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [20956 20969] ) ] 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 x ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Left_DollarBrace '${' > pattern: (pat.Words words: [ { (${ Id.VSub_Name dir ) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'> < Id.Lit_RBracket ']' > ($ Id.VSub_DollarName cur) } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} { ($ Id.VSub_DollarName dir ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} { ($ Id.VSub_DollarName dir ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Exit exit > arg_word: {<1>} ) ] ops: [ <Id.Op_DPipe _> <Id.Op_DPipe _> ] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} { ($ Id.VSub_DollarName tmp ) <.h> } { ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> 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 out)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words: [{<Id.Lit_Other '+'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName status)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'status=' > name: status ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName status)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'exec >&'> ($ Id.VSub_DollarName stdout) ) } ] 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: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.h>} ) ] 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 out)} ) 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 a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cur='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cur='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cur=' > name: cur ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName c) } ) ] 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 'cur='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cur='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cur=' > name: cur ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName a) } ) ] 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 'cur='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cur='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cur='> name: cur ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName out)} ) ] 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 in)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [{(DQ )} {<->} {<Id.Lit_Other '+'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <run> pattern: (pat.Words words: [{<run>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ <' from '> ($ Id.VSub_DollarName a ) ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ <' from '> ($ Id.VSub_DollarName in) ) } ) ] 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 define)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'/* : : generated'> ($ Id.VSub_DollarName x) <' by '> ($ Id.VSub_DollarName command) <' version '> ($ Id.VSub_DollarName version) <' : : */'> ) } ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName pragma)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#pragma '> ($ Id.VSub_DollarName x) ) } ] 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 out)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {<->} {<Id.Lit_Other '+'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName m) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <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 shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words: [{<bsh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName in ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,\\.,_,g' > ) } {<-e>} { (SQ < 's/^/x=/' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName out ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { < Id.Lit_Underscore _ > } ) ] 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_DollarName i ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Lit_Star '*' > pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <.> <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < eval > more_env: [] words: [ { < eval > } { (SQ < 'x=$x${i%%.*}_' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < eval > more_env: [] words: [ { < eval > } { (SQ < 'i=${i#*.}' > ) } ] 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 'x=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName x ) ($ Id.VSub_DollarName i) } ) ] redirects: [] ) (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: [] ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> ($ Id.VSub_DollarName out ) } ) ] 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 o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <iff> pattern: (pat.Words words: [{<iff>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName M) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'iff=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'iff=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'iff=' > name: iff ) op: assign_op.Equal rhs: { (${ Id.VSub_Name m ) <_H> } ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName regress ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [{(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName x ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <-> <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'x=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < pwd > more_env: [] words: [ { < pwd > } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { < -e > } { (SQ < 's,.*[\\\\/],,' > ) } { < -e > } { (SQ < 's,\\..*,,' > ) } { < -e > } { (SQ < 's,^lib,,' > ) } { < -e > } { (SQ < 's,^,' > ) (${ Id.VSub_Name x) <Id.Lit_Underscore _> (SQ <','>) } { < -e > } { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName x ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Lit_Star '*' > pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <Id.Lit_Underscore _> <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_VarLike 'x=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { < Id.Lit_Underscore _ > ($ Id.VSub_Dollar '$') } ) ] redirects: [] ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) (command.ShAssignment left: < Id.Lit_VarLike 'iff=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'iff=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'iff=' > name: iff ) op: assign_op.Equal rhs: {<_def> (${ Id.VSub_Name x ) } ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName x ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <-> <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'iff=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'iff=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'iff=' > name: iff ) op: assign_op.Equal rhs: { < _REGRESS > } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName iff)} ) 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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#ifndef '> ($ Id.VSub_DollarName iff) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName iff) <'\t1'> ) } ] redirects: [] 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.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 can)}) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName define)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName can))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName nan))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'can='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'can='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'can='> name: can ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nan='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nan='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nan='> name: nan ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cansep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cansep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cansep='> name: cansep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pre='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pre='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pre='> name: pre ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'inc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'inc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'inc='> name: inc ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName defhdr)} {<->} {($ Id.VSub_DollarName hdr)} ] ) 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 x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName pre)} ) 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.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 v)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName v ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s,\\., ,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'pre='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pre='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pre=' > name: pre ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pre ) <'\n'> <'#undef\t'> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) 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 o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <siz> pattern: (pat.Words words: [{<siz>} {<typ>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName v) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <char> pattern: (pat.Words words: [ {<char>} {<short>} {<int>} {<long>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pre=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'pre=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'pre=' > name: pre ) op: assign_op.Equal rhs: { (DQ <'#undef\t'> ($ Id.VSub_DollarName v) ) } ) ] 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 'pre='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pre='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pre=' > name: pre ) op: assign_op.Equal rhs: { (DQ <'#undef\t'> ($ Id.VSub_DollarName v ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.h>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName x ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,^\\([^\\\\/]*\\).*[\\\\/]\\([^\\\\/]*\\)$,\\1_\\2,' > ) } {<-e>} {(SQ <'s/\\..*//'>)} {<-e>} {(SQ <'s/^/c=/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'c=${x##*[\\\\/]}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'c=${c%%.*}'>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (SQ < 'c=${x%%[\\\\/]*}_${c}' > ) } ] redirects: [] 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: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name c) } ) ] 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 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<_hdr_> (${ Id.VSub_Name c) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName c) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<HAVE_> (${ Id.VSub_Name u) <_H>} ) ] 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: { (DQ <' '> ($ Id.VSub_DollarName puthdr) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName c) <' '> ) <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_VarLike 'puthdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'puthdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'puthdr='> name: puthdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName puthdr) <' '> ($ Id.VSub_DollarName c) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr='> name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName c) <' 1'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'inc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'inc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'inc='> name: inc ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName inc) <'\n'> <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName lib)} {($ Id.VSub_DollarName deflib)} ] ) 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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'c=${x#-l}'>)}] 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 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s,X-l,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 c)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ )} {($ Id.VSub_DollarName c)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,.*[\\\\/],,'>)} {<-e>} {(SQ <'s,\\.[^.]*$,,'>)} {<-e>} { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' > ) } {<-e>} {(SQ <'/^lib./s,^lib,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 config)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<_LIB_> (${ Id.VSub_Name c)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName c) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<HAVE_> (${ Id.VSub_Name u) <_LIB>} ) ] 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: {(DQ <' '> ($ Id.VSub_DollarName putlib) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName c) <' '>) <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_VarLike 'putlib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'putlib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'putlib='> name: putlib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName putlib) <' '> ($ Id.VSub_DollarName c) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr='> name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName c) <' 1'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName config) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName def) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <tst> pattern: (pat.Words words: [{<tst>} {<Id.KW_Var var>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> (${ Id.VSub_Name o) (${ Id.VSub_Name m) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1> <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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <tst> pattern: (pat.Words words: [{<tst>} {<Id.KW_Var var>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {(${ Id.VSub_Name v)} ) ] 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 shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName m) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName m)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] 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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <tst> pattern: (pat.Words words: [{<tst>} {<Id.KW_Var var>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName m)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$u'> pattern: (pat.Words words: [{($ Id.VSub_DollarName u)}] ) 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 m)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <hdr_> pattern: (pat.Words words: [ {<hdr_> <Id.Lit_Star '*'>} {<lib_> <Id.Lit_Star '*'>} {<sys_> <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 shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'u=' > name: u ) op: assign_op.Equal rhs: { (BracedVarSub left: < Id.Left_DollarBrace '${' > token: < Id.VSub_Name u > var_name: u suffix_op: (suffix_op.Unary op: < Id.VOp1_Pound '#' > arg_word: { < Id.Lit_Other '?' > <Id.Lit_Other '?'> <Id.Lit_Other '?'> <Id.Lit_Other '?'> } ) 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.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'u=' > name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName u ) } ] 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 '`' > ) } ) ] 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 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE_> (${ Id.VSub_Name u)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dat> pattern: (pat.Words words:[{<dat>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_DATA>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hdr> pattern: (pat.Words words:[{<hdr>} {<lcl>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_H>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <key> pattern: (pat.Words words:[{<key>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_RESERVED>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mth> pattern: (pat.Words words:[{<mth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_MATH>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <npt> pattern: (pat.Words words:[{<npt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_DECL>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {(${ Id.VSub_Name u) <_PATH>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName shell)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words:[{<ksh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name m> var_name: m suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<_>} ) 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.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName m ) } ] 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 '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nxt> pattern: (pat.Words words:[{<nxt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u) <_NEXT>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <siz> pattern: (pat.Words words:[{<siz>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<SIZEOF> (${ Id.VSub_Name u)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sys> pattern: (pat.Words words:[{<sys>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE_SYS> (${ Id.VSub_Name u) <_H>} ) ] 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 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name 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.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName def)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName m)} ) ] 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 src)}) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName src)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$noext'> pattern: (pat.Words words: [{($ Id.VSub_DollarName noext)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'EXT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXT='> name: EXT ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'EXT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXT='> name: EXT ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName EXT) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> ($ Id.VSub_DollarName src) <'\n'> ) } ] 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: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<tst>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name note> var_name: note suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName run)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName run)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cat> pattern: (pat.Words words: [ {<cat> <Id.Lit_Star '*'>} {<nocat> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} {(DQ ($ Id.VSub_DollarName src))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cross> pattern: (pat.Words words: [ {<cross> <Id.Lit_Star '*'>} {<nocross> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.sh>} {(DQ ($ Id.VSub_DollarName src))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <chmod> more_env: [] words: [ {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName tmp) <.sh>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} {($ Id.VSub_DollarName tmp) <.sh>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <run> pattern: (pat.Words words: [ {<run> <Id.Lit_Star '*'>} {<norun> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(DQ ($ Id.VSub_DollarName src))} ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mac> pattern: (pat.Words words: [ {<mac> <Id.Lit_Star '*'>} {<nomac> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.i> } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/<<[ \t]*".*"[ \t]*>>/!d'>)} {<-e>} {(SQ <'s/<<[ \t]*"//g'>)} {<-e>} {(SQ <'s/"[ \t]*>>//g'>)} {($ Id.VSub_DollarName tmp) <.i>} ] redirects: [] do_fork: T ) ] spids: [23233 23252] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words: [ {<p> <Id.Lit_Star '*'>} {<nop> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-DTEST> <Id.Lit_Equals '='> ($ Id.VSub_DollarName p) } {<-DID> <Id.Lit_Equals '='> ($ Id.VSub_DollarName v) } {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words: [ {<c> <Id.Lit_Star '*'>} {<noc> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-DTEST> <Id.Lit_Equals '='> ($ Id.VSub_DollarName p) } {<-DID> <Id.Lit_Equals '='> ($ Id.VSub_DollarName v) } {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] 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 run)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <status> pattern: (pat.Words words: [{<status> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ccflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ccflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ccflags='> name: ccflags ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words: [ {<s> <Id.Lit_Star '*'>} {<nos> <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 reallystatictest ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'reallystatictest=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'reallystatictest=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'reallystatictest=' > name: reallystatictest ) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> <'int main(){printf('> ) <hello> (DQ <');return(0);}'>) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name tmp) <s.c> } ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <s.exe> } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { (${ Id.VSub_Name tmp ) <s.c> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-o>} { (${ Id.VSub_Name tmp ) <s.exe> } { (${ Id.VSub_Name tmp ) <s.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { (${ Id.VSub_Name tmp ) <s.e> } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_DAmp _> <Id.Op_DAmp _> ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: <wc> more_env: [] words: [ {<wc>} {<-l>} { (${ Id.VSub_Name tmp ) <s.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<set>} {<x>} {<x>} { ($ Id.VSub_DollarName binding ) } ] redirects: [] do_fork: T ) (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.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_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.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: < compile > more_env: [] words: [ { < compile > } { ($ Id.VSub_DollarName cc ) } {<-o>} { (${ Id.VSub_Name tmp ) <s.exe> } { ($ Id.VSub_Number 1 ) } { (${ Id.VSub_Name tmp ) <s.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { (${ Id.VSub_Name tmp ) <s.e> } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Continue continue > ) ] ops: [ <Id.Op_DAmp _ > < Id.Op_DPipe _ > ] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < wc > more_env: [] words: [ { < wc > } { < -l > } { (${ Id.VSub_Name tmp ) <s.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$e' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName e ) } ] ) 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 'd=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'd=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'd=' > name: d ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < ls > more_env: [] words: [ { < ls > } { < -s > } { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: < compile > more_env: [] words: [ { < compile > } { ($ Id.VSub_DollarName cc ) } {<-o>} { (${ Id.VSub_Name tmp ) <s.exe> } { ($ Id.VSub_Number 2 ) } { (${ Id.VSub_Name tmp ) <s.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { (${ Id.VSub_Name tmp ) <s.e> } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Continue continue > ) ] ops: [ <Id.Op_DAmp _ > < Id.Op_DPipe _ > ] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < wc > more_env: [] words: [ { < wc > } { < -l > } { (${ Id.VSub_Name tmp ) <s.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$e' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName e ) } ] ) 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.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < ls > more_env: [] words: [ { < ls > } { < -s > } { (${ Id.VSub_Name tmp ) <s.exe> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$d' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName d ) } ] ) middle: < Id.Right_CasePat _ > action: [] right: < Id.Op_DSemi _ > ) (CaseArm left: < Id.Lit_Star '*' > pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'reallystatic=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'reallystatic=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'reallystatic=' > name: reallystatic ) op: assign_op.Equal rhs: { ($ Id.VSub_Number 2 ) } ) ] redirects: [] ) (command.Simple blame_tok: < set > more_env: [] words: [ { < set > } {<x>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: < shift > more_env: [] words: [ { < shift > } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [23443 23504] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <s.> <Id.Lit_Star '*'> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ccflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ccflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ccflags='> name: ccflags ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName reallystatic ) } ) ] 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 'ccflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ccflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ccflags='> name: ccflags ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {($ Id.VSub_DollarName mac)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'o='> name: o ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (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: <-> pattern: (pat.Words words: [{<->}] ) 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 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'o='> name: o ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName o ) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } { ($ Id.VSub_DollarName ccflags ) } { ($ Id.VSub_DollarName o ) } {<-DTEST> <Id.Lit_Equals '='> ($ Id.VSub_DollarName p) } {<-DID> <Id.Lit_Equals '='> ($ Id.VSub_DollarName v) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.c> } { ($ Id.VSub_DollarName lib ) } { ($ Id.VSub_DollarName deflib ) } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName run ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <status> pattern: (pat.Words words: [ {<status> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] 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: { ($ Id.VSub_QMark '?' ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName V ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [{<0>}] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'e=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) 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.ShAssignment left: < Id.Lit_VarLike 'e=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 'no[' > pattern: (pat.Words words: [ { < Id.Lit_ArrayLhsOpen 'no[' > <ls> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ { <Id.Lit_LBracket '[' > <ls> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'e=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <noo> pattern: (pat.Words words: [ {<noo> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.out> } ) ] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words: [ {<o> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.out> } ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [ <Id.Op_DAmp _> <Id.Op_DAmp _> ] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <no> pattern: (pat.Words words: [ {<no> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [<Id.Op_DPipe _>] ) ] 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: <execute> more_env: [] words: [ {<execute>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [ <Id.Op_DAmp _> <Id.Op_DAmp _> ] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [23939 23983] ) ] 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 run)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_ArrayLhsOpen 'no['> pattern: (pat.Words words: [ { <Id.Lit_ArrayLhsOpen 'no[' > <els> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName run ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <no> pattern: (pat.Words words: [ {<no> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'o='> name: o ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName run)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <no> pattern: (pat.Words words: [{<no> <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 e)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) 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.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) 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 run)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <o> pattern: (pat.Words words: [ {<o> <Id.Lit_Star '*'>} {<noo> <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 e)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName tmp) <.out>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.out>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName e)} {($ Id.VSub_DollarName V)} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name note> var_name: note suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName run) <Id.Lit_BadBackslash '\\'> <' passed'> } ) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name note> var_name: note suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName run)} ) right: <Id.Right_DollarBrace '}'> ) <' failed'> ) } ] redirects: [] do_fork: T ) (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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <dat> pattern: (pat.Words words: [{<dat>} {<lib>} {<mth>} {<run>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName statictest)} ) 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 'statictest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'statictest='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'statictest='> name: statictest ) op: assign_op.Equal rhs: {<FoobaR>} ) ] redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> <'_BEGIN_EXTERNS_\n'> <'extern int '> ($ Id.VSub_DollarName statictest) <';\n'> <'_END_EXTERNS_\n'> <'int main(){char* i = (char*)&'> ($ Id.VSub_DollarName statictest) <'; return ((unsigned int)i)^0xaaaa;}\n'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe> } {($ Id.VSub_DollarName tmp) <.c> } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } {($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName static)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'static='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'static=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'static=' > name: static ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c> } { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> <'int main(){printf('> ) <hello> (DQ <');return(0);}\n'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_DAmp _> <Id.Op_DAmp _> ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'e=' > name: e ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: <wc> more_env: [] words: [ {<wc>} {<-l>} { ($ Id.VSub_DollarName tmp ) <.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<set>} {<x>} {<x>} { ($ Id.VSub_DollarName binding ) } ] redirects: [] do_fork: T ) (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.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_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.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: < compile > more_env: [] words: [ { < compile > } { ($ Id.VSub_DollarName cc ) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_Number 1 ) } { ($ Id.VSub_DollarName tmp ) <.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Continue continue > ) ] ops: [ <Id.Op_DAmp _ > < Id.Op_DPipe _ > ] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < wc > more_env: [] words: [ { < wc > } { < -l > } { ($ Id.VSub_DollarName tmp ) <.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$e' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName e ) } ] ) 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 'd=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'd=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'd=' > name: d ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < ls > more_env: [] words: [ { < ls > } { < -s > } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: < compile > more_env: [] words: [ { < compile > } { ($ Id.VSub_DollarName cc ) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_Number 2 ) } { ($ Id.VSub_DollarName tmp ) <.o> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Continue continue > ) ] ops: [ <Id.Op_DAmp _ > < Id.Op_DPipe _ > ] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < wc > more_env: [] words: [ { < wc > } { < -l > } { ($ Id.VSub_DollarName tmp ) <.e> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$e' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName e ) } ] ) 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.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < ls > more_env: [] words: [ { < ls > } { < -s > } { ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$d' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName d ) } ] ) middle: < Id.Right_CasePat _ > action: [] right: < Id.Op_DSemi _ > ) (CaseArm left: < Id.Lit_Star '*' > pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'static=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'static=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'static=' > name: static ) op: assign_op.Equal rhs: { ($ Id.VSub_Number 2 ) } ) ] redirects: [] ) (command.Simple blame_tok: < set > more_env: [] words: [ { < set > } {<x>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: < shift > more_env: [] words: [ { < shift > } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] right: < Id.Op_DSemi _ > ) ] arms_end: <Id.KW_Esac esac > redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [24525 24572] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [24455 24483] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'static='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'static='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'static='> name: static ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> 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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <api> pattern: (pat.Words words:[{<api>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <cmd> pattern: (pat.Words words:[{<cmd>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {($ Id.VSub_DollarName o)} {($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'k='> name: k ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words:[{(DQ )} {<usr>}]) 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 j)} ) 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 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: {<'/'> ($ Id.VSub_DollarName j)} ) (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> ($ Id.VSub_DollarName j) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<bin>} {<etc>} {<ucb>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { ($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName a) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName k) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'k=' > name: k ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName M ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <-> <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'usr=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'usr=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' 1'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case > to_match: (case_arg.Word w: { ($ Id.VSub_DollarName define ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1>} ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < '#define ' > ($ Id.VSub_DollarName m) <'\t1\t/* '> ($ Id.VSub_DollarName a) <' in ?(/usr)/(bin|etc|ucb) */'> ) } ] redirects: [] do_fork: T ) ] right: < Id.Op_DSemi _ > ) (CaseArm left: <n> pattern: (pat.Words words: [ {<n>} ] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ ($ Id.VSub_DollarName m ) <'=1'> ) } ] redirects: [] 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.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {(${ Id.VSub_Name s) <Id.Lit_Underscore _> (${ Id.VSub_Name i) <Id.Lit_Underscore _> (${ Id.VSub_Name v) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName c) <' 1'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName define ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName c ) <'\t1\t/* '> ($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName a) <' found */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words: [{<n>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName c ) <'=1'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [24982 24995] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dat> pattern: (pat.Words words:[{<dat>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName inc)} ) 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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName inc))} ] 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>} { (DQ <'_BEGIN_EXTERNS_\n'> <'extern int '> ($ Id.VSub_DollarName v) <';\n'> <_END_EXTERNS_> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'\n'> <'#ifdef _DLL\n'> <'#define _REF_\n'> <'#else\n'> <'#define _REF_\t&\n'> <'#endif\n'> <'int main(){char* i = (char*) _REF_ '> ($ Id.VSub_DollarName v) <'; return ((unsigned int)i)^0xaaaa;}'> ) } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {($ Id.VSub_DollarName o)} {($ Id.VSub_DollarName v)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {($ Id.VSub_DollarName static)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.o>} {($ Id.VSub_DollarName lib)} {($ Id.VSub_DollarName deflib)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable'> more_env: [] words: [ {($ Id.VSub_DollarName executable)} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} {(DQ ($ Id.VSub_DollarName v) <' in default lib(s)'>)} { (DQ ($ Id.VSub_DollarName v) <' not in default lib(s)'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dfn> pattern: (pat.Words words:[{<dfn>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<dfn>} {($ Id.VSub_DollarName v)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#ifdef '> ($ Id.VSub_DollarName v) <'\n'> <'<<'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'#ifndef '> ($ Id.VSub_DollarName v) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'>>\n'> <'<<'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'#define '> ($ Id.VSub_DollarName v) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'>>\t'> ($ Id.VSub_DollarName v) <'\t<<'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'/* native '> ($ Id.VSub_DollarName v) <' */'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'>>\n'> <'<<'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'#endif'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'>>\n'> <'#endif'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.i>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/<<[ \t]*".*"[ \t]*>>/!d'>)} {<-e>} {(SQ <'s/<<[ \t]*"//g'>)} {<-e>} {(SQ <'s/"[ \t]*>>//g'>)} {($ Id.VSub_DollarName tmp) <.i>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.t>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {($ Id.VSub_DollarName tmp) <.t>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName tmp) <.t>} ] redirects: [] do_fork: T ) ] spids: [25516 25526] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [25466 25485] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <exp> pattern: (pat.Words words:[{<exp>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName test)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName sline) <': test expression expected for '> ($ Id.VSub_DollarName o) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->} {(SQ )}]) 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: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'x='> (SQ <'$'>) ($ Id.VSub_DollarName a) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'result='> name: result ) op: assign_op.Equal rhs: {<FAILURE>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] 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 test)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'> } {(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>)} {(SQ <'<'>) <Id.Lit_Star '*'> (SQ <'>'>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->} {(SQ )}]) 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 define) ($ Id.VSub_DollarName note) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName a) <'\t'> ($ Id.VSub_DollarName test) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words: [{<1> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName a) <'\t'> ($ Id.VSub_DollarName test) <'\t/* '> ($ Id.VSub_DollarName note) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName a) <'='> ($ Id.VSub_DollarName test) ) } ] 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 a) <Id.Lit_Equals '='> (SQ <'$test'>) } ] redirects: [] do_fork: T ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName note)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'note='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'note='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'note='> name: note ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName test)} ) ] 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 test)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) 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: <is> more_env: [] words: [ {<is>} {<exp>} {(DQ ($ Id.VSub_DollarName note))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (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: <echo> more_env: [] words: [ {<echo>} {(SQ )} { ($ Id.VSub_DollarName test ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_], & ,g' > ) } ] 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 i) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ { <Id.Lit_LBracket '[' > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ') (word_part.EscapedLiteral token: < Id.Lit_EscapedChar '\\\t' > ch: '\t' ) <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ { <Id.Lit_LBracket '[' > <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { <Id.Lit_VarLike 'i=' > (SQ <'${'>) ($ Id.VSub_DollarName i) (SQ <'}'>) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName i ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [{(SQ )}] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'i=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: < Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [ {(SQ <'"'>) < Id.Lit_Star '*' > (SQ <'"'>) } ] ) middle: < Id.Right_CasePat _ > action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <-> <Id.Lit_Other '+'> <0123456789> <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 i ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Lit_Star '*' > pattern: (pat.Words words: [ { < Id.Lit_Star '*' > (SQ <'"'>) <Id.Lit_Star '*'> } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'i=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) 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.ShAssignment left: < Id.Lit_VarLike 'i=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: { (SQ < '"' > ) ($ Id.VSub_DollarName i) (SQ <'"'>) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x ) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [{(SQ <'!'>)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x ) <' 0 ='> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [ {(SQ <'&'>)} {(SQ <'|'>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName x ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > (DQ ($ Id.VSub_DollarName i)) } ] ) middle: < Id.Right_CasePat _ > action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'x=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x ) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') ($ Id.VSub_DollarName i) ) } ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'x=' > name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x ) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<expr>} { ($ Id.VSub_DollarName x ) } ] redirects: [ (Redir op: < Id.Redir_GreatAnd '2>&' > loc: (redir_loc.Fd fd: 2 ) arg: { ($ Id.VSub_DollarName stderr ) } ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] 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 c)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) 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.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {<1>} { (DQ ($ Id.VSub_DollarName note) <' is true'>) } { (DQ ($ Id.VSub_DollarName note) <' is false'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hdr> pattern: (pat.Words words: [{<hdr>} {<lcl>} {<nxt>} {<sys>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words:[{<lcl>} {<nxt>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName M)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'x='> (SQ <'$'>) <Id.Lit_Underscore _> ($ Id.VSub_DollarName m) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName x)} ) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_Underscore _> ($ Id.VSub_DollarName m) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {($ Id.VSub_DollarName o)} {($ Id.VSub_DollarName f)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#include <'> ($ Id.VSub_DollarName f) <'.h>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName f)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'sys/'> pattern: (pat.Words words: [{<'sys/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: { (SQ < '-e /[\\\\\\\\\\/]sys[\\\\\\\\\\/]' > ) ($ Id.VSub_DollarName f) (SQ <'\\\\.h"/d'>) } ) ] 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: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.i> } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < '/^#[line \t]*[0123456789][0123456789]*[ \t][ \t]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\\/].*[\\\\\\/]' > ) ($ Id.VSub_DollarName f) (SQ <'\\.h"/!d'>) } { ($ Id.VSub_DollarName e ) } {<-e>} {<s> (SQ < '/.*"\\(.*\\)".*/\\1/' > ) } {<-e>} { (SQ <'s,\\\\,/,g'> ) } {<-e>} { (SQ <'s,///*,/,g'> ) } { ($ Id.VSub_DollarName tmp ) <.i> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<1q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> < abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ > <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\' > ch: '\\' ) <'/'> <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_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'k='> name: k ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName i ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,.*/\\([^/]*/[^/]*\\)$,../\\1,' > ) } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#include <'> ($ Id.VSub_DollarName k) <'>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName tmp ) <.c> } ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-E>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.i> } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'j=' > name: j ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { < -e > } { (SQ < '/^#[line \t]*[0123456789][0123456789]*[ \t][ \t]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\\/].*[\\\\\\/]' > ) ($ Id.VSub_DollarName f) (SQ <'\\.h"/!d'>) } { ($ Id.VSub_DollarName e ) } { < -e > } { < s > (SQ <'/.*"\\(.*\\)".*/\\1/'>) } { < -e > } { (SQ < 's,\\\\,/,g' > ) } { < -e > } { (SQ < 's,///*,/,g' > ) } { ($ Id.VSub_DollarName tmp ) <.i> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { < 1q > } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'wi=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'wi=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'wi=' > name: wi ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: <wc> more_env: [] words: [ {<wc>} ] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { (DQ ($ Id.VSub_DollarName i ) ) } ) ] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'wj=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'wj=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'wj=' > name: wj ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: <wc> more_env: [] words: [ {<wc>} ] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { (DQ ($ Id.VSub_DollarName j ) ) } ) ] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName wi ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.VSub_DollarName '$wj' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName wj ) } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'i=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName k ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [26462 26481] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> 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: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#include <../include/'> ($ Id.VSub_DollarName f) <'.h>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName tmp ) <.c> } ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-E>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: < Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: < Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'i=' > name: i ) op: assign_op.Equal rhs: {<'../include/'> ($ Id.VSub_DollarName f ) <.h> } ) ] redirects: [] ) ] spids: [26628 26646] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [26297 26316] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> < abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ > <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words: [{<lcl>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '#if defined(__STDPP__directive)' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '__STDPP__directive pragma pp:hosted' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#endif'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#include <'> ($ Id.VSub_DollarName i) <'>\t/* the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' 1'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <'\t1'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nxt> pattern: (pat.Words words: [{<nxt>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <' <'> ($ Id.VSub_DollarName i) <'>\t/* include path for the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> (${ Id.VSub_Name m) <'_str '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"' > ch: '"' ) <'\t/* include string for the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' <'> ($ Id.VSub_DollarName i) <'>'> ($ Id.VSub_DollarName nl ) <'#define '> (${ Id.VSub_Name m) <'_str '> (word_part.EscapedLiteral token: < Id.Lit_EscapedChar '\\"' > ch: '"' ) ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName m) <Id.Lit_Equals '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\<' > ch: '<' ) ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\>' > ch: '>' ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'../'> pattern: (pat.Words words: [ {<'../'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words: [{<lcl>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#include <'> ($ Id.VSub_DollarName i) <'>\t/* the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' 1'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <'\t1'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName m) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nxt> pattern: (pat.Words words: [{<nxt>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <' <'> ($ Id.VSub_DollarName i) <'>\t/* include path for the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> (${ Id.VSub_Name m) <'_str '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"' > ch: '"' ) <'\t/* include string for the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' <'> ($ Id.VSub_DollarName i) <'>'> ($ Id.VSub_DollarName nl ) <'#define '> (${ Id.VSub_Name m) <'_str '> (word_part.EscapedLiteral token: < Id.Lit_EscapedChar '\\"' > ch: '"' ) ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName m) <Id.Lit_Equals '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\<' > ch: '<' ) ($ Id.VSub_DollarName i) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\>' > ch: '>' ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] 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: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words: [{<lcl>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName all ) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m ) <'\t\t/* no native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m ) <'\t0\t/* no native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] 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 m) <Id.Lit_Equals '='> <0> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nxt> pattern: (pat.Words words: [{<nxt>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName all ) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <1> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m ) <'\t\t/* no include path for the native <'> ($ Id.VSub_DollarName f) <'.h> */'> ) } ] redirects: [] 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.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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <hdr> pattern: (pat.Words words:[{<hdr>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName f) <.h>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sys> pattern: (pat.Words words:[{<sys>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<'sys/'> ($ Id.VSub_DollarName f) <.h> } ) ] 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: { (DQ <' '> ($ Id.VSub_DollarName gothdr) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' - '> ($ Id.VSub_DollarName x) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<Id.Lit_Other '+'>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' + '> ($ Id.VSub_DollarName x) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<Id.Lit_Other '+'>}] 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>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName allinc) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#include <'> ($ Id.VSub_DollarName x) <'>'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_hdr> more_env: [] words: [ {<is_hdr>} { ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr=' > name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr ) <' + '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName M) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName puthdr ) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ { < Id.Lit_Star '*' > (DQ <' '> ($ Id.VSub_DollarName 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 '*' > } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'puthdr=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'puthdr=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'puthdr=' > name: puthdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName puthdr ) <' '> ($ Id.VSub_DollarName m) ) } ) ] redirects: [] ) (command.ShAssignment left: < Id.Lit_VarLike 'usr=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'usr=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'usr=' > name: usr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName usr ) ($ Id.VSub_DollarName nl) <'#define '> ($ Id.VSub_DollarName m) <' 1'> ) } ) ] 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 define ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '#define ' > ($ Id.VSub_DollarName m) <'\t1\t/* #include <'> ($ Id.VSub_DollarName x) <'> ok */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words: [{<n>}] ) middle: < Id.Right_CasePat _ > action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName m ) <'=1'> ) } ] 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 m ) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [27227 27234] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr=' > name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr ) <' - '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName M)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName define ) ($ Id.VSub_DollarName all) ($ Id.VSub_DollarName config) ($ Id.VSub_DollarName undef) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_QMark '?' > <1> <Id.Lit_QMark '?'> } {<1> <Id.Lit_QMark '?' > <Id.Lit_QMark '?'> <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#undef\t'> ($ Id.VSub_DollarName m) <'\t\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <11> pattern: (pat.Words words: [ {<11> <Id.Lit_QMark '?' > <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName m) <'\t0\t/* #include <'> ($ Id.VSub_DollarName x) <'> not ok */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n1> pattern: (pat.Words words: [ {<n1> <Id.Lit_QMark '?' > <1> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName m ) <'='> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n1> pattern: (pat.Words words: [ {<n1> <Id.Lit_QMark '?' > <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName m ) <'=0'> ) } ] 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 m) <Id.Lit_Equals '='> <0> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> 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: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <iff> pattern: (pat.Words words:[{<iff>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <ini> pattern: (pat.Words words:[{<ini>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <key> pattern: (pat.Words words:[{<key>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'w='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'w='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'w='> name: w ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] 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.Simple blame_tok: <is> more_env: [] words: [ {<is>} {($ Id.VSub_DollarName o)} {($ Id.VSub_DollarName w)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> <'int f(){int '> ($ Id.VSub_DollarName w) <' = 1;return('> ($ Id.VSub_DollarName w) <');}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>}] redirects: [] do_fork: T ) (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 '*'> (DQ <' ='>)} {<Id.Lit_Star '*'> (DQ <' = '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<x>} {($ Id.VSub_DollarName set)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'w='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'w='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'w='> name: w ) 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_Equals '=' > pattern: (pat.Words words: [ { < Id.Lit_Equals '=' > } ] ) 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_DollarName w ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: < Id.Left_SingleQuote '\'' > pattern: (pat.Words words: [{(SQ )}] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike 'w=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'w=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'w=' > name: w ) 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 'w=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'w=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'w=' > name: w ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName w ) <' '> ($ Id.VSub_Number 1) ) } ) ] 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_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Equals '='> pattern: (pat.Words words: [ {<Id.Lit_Equals '='>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_Pound '#' ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [{<0>}] ) middle: < Id.Right_CasePat _ > action: [ (command.ShAssignment left: < Id.Lit_VarLike '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 < ' ' > ) } ) ] 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: { ($ Id.VSub_Star '*' ) } ) ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName shell ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ksh> pattern: (pat.Words words: [{<ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-u>} { <Id.Lit_VarLike 'u=' > ($ Id.VSub_DollarName w) } ] 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 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'u=' > name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName w ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < tr > more_env: [] words: [ { < tr > } { < abcdefghijklmnopqrstuvwxyz > } { < ABCDEFGHIJKLMNOPQRSTUVWXYZ > } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {<Id.Lit_Underscore _> ($ Id.VSub_DollarName u) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName w) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName M) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '[' > <Id.KW_Bang '!'> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_> <Id.Lit_RBracket ']' > <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'M=' > name: M ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { (DQ < X > ($ Id.VSub_DollarName m) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { < -e > } { (SQ < 's,^.,,' > ) } { < -e > } { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] 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 config ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [{<1>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'm=' > name: m ) op: assign_op.Equal rhs: {<HAVE> (${ Id.VSub_Name u ) <_RESERVED> } ) ] 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 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'm=' > name: m ) op: assign_op.Equal rhs: {<_key_> (${ Id.VSub_Name w ) } ) ] 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.Simple blame_tok: <report> more_env: [] words: [ {<report>} {<->} {<1>} {<->} {<->} { (DQ ($ Id.VSub_DollarName w) <' is not a reserved keyword'> ) } { (DQ < 'default for reserved keyword ' > ($ Id.VSub_DollarName v) ) } ] redirects: [] do_fork: T ) ] spids: [27585 27603] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {<0>} {<1>} { (DQ ($ Id.VSub_DollarName w) <' is a reserved keyword'> ) } {<->} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName M)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName define ) ($ Id.VSub_DollarName w) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> ($ Id.VSub_DollarName v) } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'#define '> ($ Id.VSub_DollarName v ) <'\t'> ($ Id.VSub_DollarName w) <'\t/* alternate for reserved keyword '> ($ Id.VSub_DollarName v) <' */'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words: [ {<n> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName v ) <'='> ($ Id.VSub_DollarName w) ) } ] redirects: [] 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: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <lib> pattern: (pat.Words words:[{<lib>} {<mth>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.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 v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {($ Id.VSub_DollarName o)} {($ Id.VSub_DollarName v)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'typedef int (*_IFFE_fun)();\n'> <'#ifdef _IFFE_extern\n'> <'_BEGIN_EXTERNS_\n'> <'extern int '> ($ Id.VSub_DollarName v) <'();\n'> <'_END_EXTERNS_\n'> <'#endif\n'> <'static _IFFE_fun i=(_IFFE_fun)'> ($ Id.VSub_DollarName v) <';int main(){return ((unsigned int)i)^0xaaaa;}\n'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: {<-D_IFFE_extern>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [28141 28159] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {($ Id.VSub_DollarName d)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] spids: [28164 28184] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: {<error>} ) ] 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.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<error>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName d))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {($ Id.VSub_DollarName d)} { ($ Id.VSub_DollarName static ) } {<-o>} {($ Id.VSub_DollarName tmp) <.exe> } {($ Id.VSub_DollarName tmp) <.o> } {($ Id.VSub_DollarName lib)} { ($ Id.VSub_DollarName deflib ) } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } {($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lib> pattern: (pat.Words words: [{<lib>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {<1>} { (DQ ($ Id.VSub_DollarName v) <'() in default lib(s)'> ) } { (DQ ($ Id.VSub_DollarName v) <'() not in default lib(s)'> ) } { (DQ <'default for function '> ($ Id.VSub_DollarName v) <'()'> ) } ] redirects: [] do_fork: T ) ] spids: [28222 28259] ) ] 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 o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <mth> pattern: (pat.Words words:[{<mth>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {($ Id.VSub_DollarName d)} { ($ Id.VSub_DollarName static ) } {<-o>} {($ Id.VSub_DollarName tmp) <.exe> } {($ Id.VSub_DollarName tmp) <.o> } {<-lm>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable' > more_env: [] words: [ { ($ Id.VSub_DollarName executable ) } {($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} { (DQ ($ Id.VSub_DollarName v) <'() in math lib'> ) } { (DQ ($ Id.VSub_DollarName v) <'() not in math lib'> ) } { (DQ <'default for function '> ($ Id.VSub_DollarName v) <'()'> ) } ] 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: <report> more_env: [] words: [ {<report>} {<1>} {<1>} {<->} { (DQ ($ Id.VSub_DollarName v) <'() not in default lib(s)'> ) } { (DQ <'default for function '> ($ Id.VSub_DollarName v) <'()'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [28198 28212] ) ] 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 intrinsic)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'_BEGIN_EXTERNS_\n'> <'extern int foo();\n'> <'_END_EXTERNS_\n'> < 'static int ((*i)())=foo;int main(){return(i==0);}\n' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'intrinsic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'intrinsic='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'intrinsic='> name: intrinsic ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] 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 o)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <mth> pattern: (pat.Words words:[{<mth>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName intrinsic)} {<1>} { (DQ ($ Id.VSub_DollarName v) <'() in math lib'> ) } { (DQ ($ Id.VSub_DollarName v) <'() not in math lib'> ) } { (DQ <'default for function '> ($ Id.VSub_DollarName v) <'()'> ) } ] 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: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName intrinsic)} {<1>} { (DQ ($ Id.VSub_DollarName v) <'() in default lib(s)'> ) } { (DQ ($ Id.VSub_DollarName v) <'() not in default lib(s)'> ) } { (DQ <'default for function '> ($ Id.VSub_DollarName v) <'()'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mac> pattern: (pat.Words words:[{<mac>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<mac>} {($ Id.VSub_DollarName v)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'#ifdef '> ($ Id.VSub_DollarName v) <'\n'> <'\''> ($ Id.VSub_DollarName m) <':'> ($ Id.VSub_DollarName v) <'\'\n'> <'#endif'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-c>} { (DQ <'\''> ($ Id.VSub_DollarName m) <':'> ($ Id.VSub_DollarName v) <'\''> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} {(DQ ($ Id.VSub_DollarName v) <' is a macro'>)} {(DQ ($ Id.VSub_DollarName v) <' is not a macro'>)} {(DQ <'default for macro '> ($ Id.VSub_DollarName v))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mem> pattern: (pat.Words words:[{<mem>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'i='> (SQ <'$'>) <_iffe_typedef_> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) 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 pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName p) <' i;\n'> <'int n = sizeof(i);'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<typ>} {($ Id.VSub_DollarName p)} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_iffe_typedef_> ($ Id.VSub_DollarName p) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [28745 28763] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_iffe_typedef_> ($ Id.VSub_DollarName p) <Id.Lit_Equals '='> <0> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName v) <' is not a member of '> ($ Id.VSub_DollarName p) ) } ) (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: { (DQ <'struct '> ($ Id.VSub_DollarName p) ) } ) ] 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 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<mem>} {($ Id.VSub_DollarName v)} {(DQ ($ Id.VSub_DollarName p))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName p) <' i;\n'> <'int n = sizeof(i.'> ($ Id.VSub_DollarName v) <');'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} { (DQ ($ Id.VSub_DollarName v) <' is a member of '> ($ Id.VSub_DollarName p) ) } {(DQ ($ Id.VSub_DollarName i))} ] 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 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'i='> (SQ <'$'>) <_iffe_typedef_> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) 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 pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName p) <' i;\n'> <'int n = sizeof(i);'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<typ>} {($ Id.VSub_DollarName p)} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_iffe_typedef_> ($ Id.VSub_DollarName p) <Id.Lit_Equals '='> <1> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [28985 29003] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_iffe_typedef_> ($ Id.VSub_DollarName p) <Id.Lit_Equals '='> <0> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName p) < ' is not a non-opaque struct' > ) } ) (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: { (DQ <'struct '> ($ Id.VSub_DollarName p) ) } ) ] 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 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<nos>} {(DQ ($ Id.VSub_DollarName p))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName p) <' i;\n'> <'int n = sizeof(i);'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName p) <' i;\n'> <'unsigned long f() { return (unsigned long)i; }'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_GreatAnd '>&' > loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName nullout ) } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [29162 29180] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [29119 29137] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {<1>} { (DQ ($ Id.VSub_DollarName p) <' is a non-opaque struct'> ) } {(DQ ($ Id.VSub_DollarName i))} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nop> pattern: (pat.Words words:[{<nop>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <npt> pattern: (pat.Words words:[{<npt>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<npt>} {($ Id.VSub_DollarName v)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'_BEGIN_EXTERNS_\n'> <'struct _iffe_struct { int _iffe_member; };\n'> <'#if _STD_\n'> <'extern struct _iffe_struct* '> ($ Id.VSub_DollarName v) <'(struct _iffe_struct*);\n'> <'#else\n'> <'extern struct _iffe_struct* '> ($ Id.VSub_DollarName v) <'();\n'> <'#endif\n'> <'_END_EXTERNS_\n'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName cc) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' -O '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'xx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'xx='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'xx='> name: xx ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName cc)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s/ -O / /g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'xx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'xx='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'xx='> name: xx ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName cc)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName xx)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {<-> ($ Id.VSub_DollarName config)} {($ Id.VSub_QMark '?')} {<1>} { (DQ ($ Id.VSub_DollarName v) <'() needs a prototype'> ) } { (DQ ($ Id.VSub_DollarName v) <'() does not need a prototype'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <num> pattern: (pat.Words words:[{<num>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<num>} {($ Id.VSub_DollarName v)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {($ Id.VSub_DollarName tmp) <.c>} { (DQ <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'_BEGIN_EXTERNS_\n'> <'int _iffe_int = '> ($ Id.VSub_DollarName v) <' / 2;\n'> <'_END_EXTERNS_\n'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} { (DQ ($ Id.VSub_DollarName v) <' is a numeric constant'> ) } { (DQ ($ Id.VSub_DollarName v) <' is not a numeric constant'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <one> pattern: (pat.Words words:[{<one>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName a)} {($ Id.VSub_DollarName hdr)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ <'#include <'> ($ Id.VSub_DollarName i) <'>'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName gothdr) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' - '> ($ Id.VSub_DollarName i) <' '> ) <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 '*'> (DQ <' + '> ($ Id.VSub_DollarName i) <' '> ) <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.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName x))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_hdr> more_env: [] words: [ {<is_hdr>} { ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr=' > name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr ) <' + '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] spids: [29521 29528] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gothdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gothdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gothdr=' > name: gothdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gothdr ) <' - '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue > ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName one)} ) 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 'one='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'one='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'one='> name: one ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ ($ Id.VSub_DollarName x)) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] 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 one))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} { ($ Id.VSub_DollarName cc ) } {<-E>} { ($ Id.VSub_DollarName tmp ) <.c> } ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName nullin ) } ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd: 1 ) arg: { ($ Id.VSub_DollarName tmp ) <.i> } ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName i) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName c) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '[' > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'c=' > name: c ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName c ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < sed > more_env: [] words: [ { < sed > } { (SQ < 's,[\\\\/],[\\\\/],g' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) } ) ] 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: { (CommandSub left_token: <Id.Left_Backtick '`' > child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < '/^#[line \t]*1[ \t][ \t]*"[\\\\\\/].*[\\\\\\/]' > ) ($ Id.VSub_DollarName c) (SQ <'"/!d'>) } { ($ Id.VSub_DollarName tmp ) <.i> } ] redirects: [] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) 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.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [29606 29625] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'one='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'one='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'one='> name: one ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName one) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName x))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <opt> pattern: (pat.Words words:[{<opt>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName m)} ) ] redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<opt>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName PACKAGE_OPTIONS) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName a) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {<1>} { (DQ ($ Id.VSub_DollarName a) <' is set in '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <PACKAGE_OPTIONS> ) } { (DQ ($ Id.VSub_DollarName a) <' is not set in '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <PACKAGE_OPTIONS> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <out> pattern: (pat.Words words:[{<out>} {<output>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<pth>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <pkg> more_env: [] words: [{<pkg>} {($ Id.VSub_DollarName pth)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tab='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tab='> name: tab ) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName pth)}] ) 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 i)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'{'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name nl) <'}'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'l='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'l='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'l='> name: l ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<i>} ) ] redirects: [] ) (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: { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$' > ch: '$' ) (${ Id.VSub_Name x) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: {(${ Id.VSub_Name nl) (${ Id.VSub_Name tab) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: { (DQ <'fnd()'> (${ Id.VSub_Name nl) <'{'> (${ Id.VSub_Name t) <'for '> (${ Id.VSub_Name x) <' in'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'}'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name b) (${ Id.VSub_Name t) <do> (${ Id.VSub_Name tab) <'if '> ($ Id.VSub_DollarName exists) <' '> (${ Id.VSub_Name v) <'/'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$' > ch: '$' ) <'{1}'> (${ Id.VSub_Name t) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) <then> (${ Id.VSub_Name tab) <'f='> (${ Id.VSub_Name v) <'/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{1}'> (${ Id.VSub_Name t) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) <return> (${ Id.VSub_Name t) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) <fi> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name t) <done> (${ Id.VSub_Name e) ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ (${ Id.VSub_Name b) (${ Id.VSub_Name e) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fnd> more_env: [] words: [ {<fnd>} {($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName f)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <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.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name b) (${ Id.VSub_Name t) <do> (${ Id.VSub_Name tab) <'test '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name v) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' = \'\' -o -d '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"' > ch: '"' ) (${ Id.VSub_Name v) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' &&'> (${ Id.VSub_Name t) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {(${ Id.VSub_Name x) <i>} ) ] redirects: [] ) (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: { (DQ (${ Id.VSub_Name v) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$' > ch: '$' ) (${ Id.VSub_Name x) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name b) <'for '> (${ Id.VSub_Name x) <' in'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name t) <done> (${ Id.VSub_Name e) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name t) (${ Id.VSub_Name tab) (${ Id.VSub_Name tab) ) } ) ] 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 e)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: < Id.VSub_DollarName '$exists' > more_env: [] words: [ { ($ Id.VSub_DollarName exists ) } { (${ Id.VSub_Name i ) <'/'> (${ Id.VSub_Name a) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'f=' > name: f ) op: assign_op.Equal rhs: { (${ Id.VSub_Name i ) <'/'> (${ Id.VSub_Name a) } ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] spids: [30180 30193] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> 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 i) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words: [{<'/'>} {<.>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'b=' > name: b ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name b ) <' \'\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'b=' > name: b ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name b ) <' /'> (${ Id.VSub_Name i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (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.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <' '>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (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 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName set)} ) ] 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 f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) 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.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName f) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {(DQ ($ Id.VSub_DollarName f))} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name note> var_name: note suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName a) <' path'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName a) <' path not found'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <run> pattern: (pat.Words words:[{<run>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <is> more_env: [] words: [{<is>} {<run>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-r>} {($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <failure> more_env: [] words: [{<failure>} {<not>} {<found>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName verbose)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_DollarName a) <': not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [30398 30409] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <noisy> more_env: [] words: [{<noisy>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.c>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName std) <'\n'> ($ Id.VSub_DollarName usr) <'\n'> ($ Id.VSub_DollarName inc) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] right: <Id.Lit_RBrace '}'> ) (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} {($ Id.VSub_DollarName lib)} {($ Id.VSub_DollarName deflib)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable'> more_env: [] words: [ {($ Id.VSub_DollarName executable)} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName opt)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.sh>}] ) middle: <Id.Right_CasePat _> action: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <':\n'> <'set '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'cc=\''> ($ Id.VSub_DollarName cc) <'\' executable=\''> ($ Id.VSub_DollarName executable) <'\' id=\''> ($ Id.VSub_DollarName m) <'\' static=\''> ($ Id.VSub_DollarName static) <'\' tmp=\''> ($ Id.VSub_DollarName tmp) <'\''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' '> ($ Id.VSub_DollarName opt) <' '> ($ Id.VSub_DollarName hdr) <' '> ($ Id.VSub_DollarName test) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.sh>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <chmod> more_env: [] words: [ {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName tmp) <.sh>} ] redirects: [] do_fork: T ) (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <.> more_env: [] words: [ {<.>} {($ Id.VSub_DollarName tmp) <.sh>} ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] ) ] 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: <false> more_env: [] words: [{<false>}] 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_QMark '?')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <success> more_env: [] words: [{<success>}] 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: <failure> more_env: [] words: [{<failure>} {<cannot>} {<run>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName verbose)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_DollarName a) <': cannot run'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <siz> pattern: (pat.Words words:[{<siz>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName p) <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<siz>} { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) ) } ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName p) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName v) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <long> pattern: (pat.Words words: [ {<long> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <_0123456789> <Id.Lit_RBracket ']'> <Id.Lit_ArrayLhsOpen 'int['> <_0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' i;\n'> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' f() {\n'> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' v; i = 1; v = i;'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < 'i = v * i; i = i / v; v = v + i; i = i - v;' > ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName v)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <float> pattern: (pat.Words words: [{<float>} {<double>}] ) 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 < 'v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;' > ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'return v; }'>)}] 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>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'struct xxx { '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' mem; };\n'> <'static struct xxx v;\n'> <'struct xxx* f() { return &v; }'> ) } ] 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 x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {(DQ <'struct '>)} {(DQ <'union '>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'int g() { return 0; }'>)} ] 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>} { (DQ <'int g() { return sizeof('> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <')<=sizeof('> ($ Id.VSub_DollarName v) <'); }'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [ {<copy>} {<->} { (DQ <'\n'> <'int main() {\n'> <'\t\tf();\n'> <'\t\tg();\n'> <'\t\tprintf('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'%u'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <n> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', sizeof('> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <'));\n'> <'\t\treturn 0;\n'> <'}'> ) } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.dat>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} {($ Id.VSub_DollarName lib)} {($ Id.VSub_DollarName deflib)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable'> more_env: [] words: [ {($ Id.VSub_DollarName executable)} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.dat> } ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] ) 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_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName tmp) <.dat> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [30979 31025] ) ] else_kw: <Id.KW_Else else> else_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: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'c='> name: c ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_DollarName c)} {(DQ ($ Id.VSub_DollarName z))} { (DQ <'sizeof('> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <')'> ) } { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' not a type with known size'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sym> pattern: (pat.Words words:[{<sym>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName test)}) 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName test)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'\'=\' '> ($ Id.VSub_DollarName x) <' \'=\''> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-E>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(DQ <'/\'=\'/!d'>)} {<-e>} {(DQ <'s/\'=\'//g'>)} {<-e>} {(SQ <'s/[ \t]//g'>)} {<-e>} {(SQ <'s/((([^()]*)))->/->/g'>)} {<-e>} {(SQ <'s/(([^()]*))->/->/g'>)} {<-e>} {(SQ <'s/([^()]*)->/->/g'>)} {<-e>} { (SQ < 's/\\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\\)\\[/\\\n' > <'ary \\1[/g'> ) } {<-e>} { (SQ < 's/\\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\\)(/\\\n' > <'fun \\1[/g'> ) } {<-e>} { (SQ < 's/\\*->\\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/->\\\n' > <'ptr \\1/g'> ) } {<-e>} { (SQ < 's/->\\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/->\\\n' > <'reg \\1/g'> ) } {<-e>} { (DQ <'/^'> ($ Id.VSub_DollarName v) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'/d'> ) } {<-e>} { (SQ < 's/^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*$/\\\n' > <'nam &/g'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'/^... /!d'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [ (EnvPair left: <Id.Lit_VarLike 'LC_ALL='> name: LC_ALL val: {<C>} ) ] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's/\\(...\\) \\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\\).*/#ifndef _\\1_' > ) ($ Id.VSub_DollarName v) (SQ <'\\\n'> <'#define _\\1_'>) ($ Id.VSub_DollarName v) (SQ <' \\2\\\n'> <'#define _\\1_'>) ($ Id.VSub_DollarName v) (SQ <'_str "\\2"\\\n'> <'#endif/'>) } ] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> ] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <typ> pattern: (pat.Words words:[{<typ>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName p) <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <is> more_env: [] words: [ {<is>} {<typ>} { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) ) } ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName p) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName v) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <long> pattern: (pat.Words words: [ {<long> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <_0123456789> <Id.Lit_RBracket ']'> <Id.Lit_ArrayLhsOpen 'int['> <_0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'static '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' i;\n'> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' f() {\n'> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' v; i = 1; v = i;'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < 'i = v * i; i = i / v; v = v + i; i = i - v;' > ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName v)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <float> pattern: (pat.Words words: [{<float>} {<double>}] ) 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 < 'v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;' > ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'return v; }'>)}] 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>} { (DQ ($ Id.VSub_DollarName pre) <'\n'> ($ Id.VSub_DollarName tst) <'\n'> ($ Id.VSub_DollarName ext) <'\n'> ($ Id.VSub_DollarName inc) <'\n'> <'struct xxx { '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' mem; };\n'> <'static struct xxx v;\n'> <'struct xxx* f() { return &v; }'> ) } ] 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 x)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {(DQ <'struct '>)} {(DQ <'union '>)} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'int main() { f(); return 0; }'>)} ] 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>} { (DQ <'int main() { f(); return sizeof('> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <')<=sizeof('> ($ Id.VSub_DollarName v) <'); }'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.exe>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <compile> more_env: [] words: [ {<compile>} {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} {($ Id.VSub_DollarName lib)} {($ Id.VSub_DollarName deflib)} ] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName nullout)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$executable'> more_env: [] words: [ {($ Id.VSub_DollarName executable)} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <execute> more_env: [] words: [ {<execute>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.Simple blame_tok: <report> more_env: [] words: [ {<report>} {($ Id.VSub_QMark '?')} {<1>} { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' is a type'> ) } { (DQ ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) <' is not a type'> ) } { (DQ <'default for type '> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName v) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <val> pattern: (pat.Words words:[{<val>}]) 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_SingleQuote '\''> pattern: (pat.Words words: [{(SQ <'"'>) <Id.Lit_Star '*'> (SQ <'"'>)}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName arg) <Id.Lit_Equals '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') ($ Id.VSub_DollarName val) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) } ] 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 arg) <Id.Lit_Equals '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName val) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <ver> pattern: (pat.Words words:[{<ver>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'result='> name: result ) op: assign_op.Equal rhs: {<FAILURE>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'result='> name: result ) op: assign_op.Equal rhs: {<SUCCESS>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) 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 command) <': '> ($ Id.VSub_DollarName file) ($ Id.VSub_DollarName line) <': '> ($ Id.VSub_DollarName o) <': unknown feature test'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName stderr)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'status='> name: status ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName not)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName result)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <FAILURE> pattern: (pat.Words words:[{<FAILURE>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'result='> name: result ) op: assign_op.Equal rhs: {<SUCCESS>} ) ] 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 'result='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'result='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'result='> name: result ) op: assign_op.Equal rhs: {<FAILURE>} ) ] 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 result)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <FAILURE> pattern: (pat.Words words:[{<FAILURE>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'user_pf='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user_pf='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_pf='> name: user_pf ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName fail)} ) (AssignPair left: <Id.Lit_VarLike 'user_yn='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_yn='> name: user_yn ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName no)} ) ] 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 'user_pf='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user_pf='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_pf='> name: user_pf ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName pass)} ) (AssignPair left: <Id.Lit_VarLike 'user_yn='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_yn='> name: user_yn ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName yes)} ) ] 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 user_pf)}) 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.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ ($ Id.VSub_DollarName user_pf))}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName nullin)} ) ] 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 user_yn)}) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName def)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) 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 note)}) 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName user_yn)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> ($ Id.VSub_DollarName nl) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'user_yn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user_yn='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_yn='> name: user_yn ) op: assign_op.Equal rhs: { (DQ <'/* '> ($ Id.VSub_DollarName note) <' */'> ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName user_yn) ) } ) ] 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 'user_yn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user_yn='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user_yn='> name: user_yn ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName user_yn) <'\t/* '> ($ Id.VSub_DollarName note) <' */'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <copy> more_env: [] words: [{<copy>} {<->} {(DQ ($ Id.VSub_DollarName user_yn))}] 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 ifelse) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName result) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <TEST> pattern: (pat.Words words:[{<TEST> <Id.Lit_Colon ':'> <SUCCESS>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifelse='> name:ifelse) op: assign_op.Equal rhs: {<KEEP>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <TEST> pattern: (pat.Words words:[{<TEST> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifelse='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifelse='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifelse='> name:ifelse) op: assign_op.Equal rhs: {<SKIP>} ) ] 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 group) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName result) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <SUCCESS>} ] ) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName groups)} {(SQ )} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hdr='> name:hdr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_hdr)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lib='> name:lib) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_lib)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mac='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mac='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mac='> name:mac) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_mac)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_opt)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pth='> name:pth) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_pth)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test='> name:test) op: assign_op.Equal rhs: {($ Id.VSub_DollarName com_test)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName occ) <' '> ($ Id.VSub_DollarName includes))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'group='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'group='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'groups='> name:groups) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (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_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\('> ch: '(' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\{'> ch: '{' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\}'> ch:'}') (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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName test)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) 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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName test) <' '> ($ 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: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'group='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'group='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'group='> name: group ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName group) ($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-l> pattern: (pat.Words words:[{<-l> <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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words: [{<Id.Lit_Other '+'> <l> <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 shell)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsh> pattern: (pat.Words words:[{<bsh>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<X> ($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/X+/-/'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(SQ <'x=-${1#+}'>)}] 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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ Id.VSub_DollarName x) ) } ) ] 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Other '+'> <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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <run> pattern: (pat.Words words:[{<run>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'opt='> name: opt ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName opt) <' '> ($ 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.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: <-D> pattern: (pat.Words words: [{<-D> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mac='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mac='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mac='> name: mac ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName mac) <' '> ($ 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 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cc='> name: cc ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cc) <' '> ($ 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: [] ) ] 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 '*'> <.> <Id.Lit_LBracket '['> <aAxX> <Id.Lit_RBracket ']'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <dD> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> } {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <iI> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <bB> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lib='> name: lib ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lib) <' '> ($ Id.VSub_Number 1) ) } ) ] 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 '*'> <Id.Lit_LBracket '['> <.> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'/'> <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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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 'hdr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hdr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hdr='> name: hdr ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName hdr) <' '> ($ 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: [] ) ] 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 group)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'groups='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'groups='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'groups='> name: groups ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName groups) <' '> ($ 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.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: <pth> pattern: (pat.Words words:[{<pth>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pth='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pth='> name: pth ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pth) <' '> ($ 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName test)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) 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 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'test='> name: test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName test) <' '> ($ 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: [] ) ] 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: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] )