(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<cross>} {<compiler>} {<a.out>} {<execution>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {<crossexec>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp) op: assign_op.Equal rhs: {<'/tmp/cross'> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName command))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: crossexec (AT&T Labs Research) 2004-01-04 $\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?crossexec - cross compiler a.out execution]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' runs a cross-compiled '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' in an environment\n'> <Id.Char_Literals '\tthat supports a cross-compilation architecture different from the\n' > <Id.Char_Literals '\tcurrent host. The cross environment is determined by ' > <Id.Char_OneChar '\\a'> <Id.Char_Literals crosstype> <Id.Char_OneChar '\\a'> <Id.Char_Literals ',\n'> <Id.Char_Literals '\tusually a host type name produced by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). '> <Id.Char_OneChar '\\a'> <Id.Char_Literals crosstype> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tis used to find an entry in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOME/.crossexec'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' that specifies\n'> <Id.Char_Literals '\tthe cross compiler host and access details.]\n'> <Id.Char_Literals '[+?The exit status of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals crossexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is the exit status of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[+CROSS ENVIRONMENT FILE?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOME/.crossexec'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' contains one line for each\n'> <Id.Char_Literals '\tsupported '> <Id.Char_OneChar '\\a'> <Id.Char_Literals crosstype> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Each line contains 5 tab separated fields.\n'> <Id.Char_Literals '\tField default values are specified as '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The fields are:]{\n'> <Id.Char_Literals '\t[+crosstype?The host type produced by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '\t[+host?The host name.]\n'> <Id.Char_Literals '\t[+user?The user name on '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. The default is the current user.]\n'> <Id.Char_Literals '\t[+dir?The directory to copy '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and execute it. The default\n'> <Id.Char_Literals '\t\tis the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals user> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOME'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' on '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\t[+shell?The command used to get shell access to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Currently\n'> <Id.Char_Literals '\t\tonly '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rsh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ssh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are supported.]\n'> <Id.Char_Literals '\t[+copy?The command used to copy '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Currently\n'> <Id.Char_Literals '\t\tonly '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rcp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals scp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are supported.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[n:show?Show the underlying commands but do not execute.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals 'crosstype command [ option ... ] [ file ... ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals rcp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rsh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals scp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ssh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: {(DQ <'crosstype command [ option ... ] [ file ... ]'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} {(SQ <'-?'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {($ Id.VSub_DollarName OPTIND) <-1>}] 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.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) 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 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok:<shift> more_env:[] words:[{<shift>}] redirects:[] do_fork:T) (command.ShAssignment left: <Id.Lit_VarLike 'info='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'info='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'info='> name:info) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOME) <'/.'> ($ Id.VSub_DollarName command)} ) ] 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 info)}] 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 info) <': not found'>) } ] 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>}) ] spids: [413 423] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> 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.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 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <'\t'>)} ) ] redirects: [] ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<hosttype>} {<hostname>} {<usr>} {<dir>} {<sh>} {<cp>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {($ 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 code)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName type) <': unknown cross compiler host type'> ) } ] 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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName hosttype)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$type'> pattern: (pat.Words words:[{($ Id.VSub_DollarName type)}]) 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: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName info)} ) ] ) (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: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cpu='> name:cpu) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'shu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shu='> name:shu) 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 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cpu='> name:cpu) op: assign_op.Equal rhs: {(${ Id.VSub_Name usr) <Id.Lit_At '@'>} ) (AssignPair left: <Id.Lit_VarLike 'shu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shu='> name:shu) op: assign_op.Equal rhs: {(DQ <'-l '> ($ Id.VSub_DollarName usr))} ) ] 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 dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (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: (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 sh)}) 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 'sh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sh='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sh='> name:sh) op: assign_op.Equal rhs: {<ssh>} ) ] 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 cp)}) 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 'cp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cp='> name:cp) op: assign_op.Equal rhs: {<scp>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <scp> pattern: (pat.Words words:[{<scp>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cp='> name:cp) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cp) <' -q'>)} ) ] 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 tmp))} {<0>} {<1>} {<2>} {<3>} {<15>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName cp)} {($ Id.VSub_DollarName cmd)} {($ Id.VSub_DollarName cpu) ($ Id.VSub_DollarName hostname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName dir) } ] redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/dev/null'>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {<'./'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cmd> var_name: cmd suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName sh)} {($ Id.VSub_DollarName shu)} {($ Id.VSub_DollarName hostname)} { (DQ <'cd '> ($ Id.VSub_DollarName dir) <'; LD_LIBRARY_PATH=: '> ($ Id.VSub_DollarName cmd) <' '> ($ Id.VSub_At '@') <' </dev/null 2>/dev/null; code='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'?; rm -f '> ($ Id.VSub_DollarName cmd) <'; echo '> ($ Id.VSub_DollarName command) <': exit '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'code >&2'> ) } ] 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: {($ Id.VSub_DollarName tmp)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/^'>) ($ Id.VSub_DollarName command) (SQ <': exit [0-9][0-9]*$/!d'>)} {<-e>} {(SQ <'s/.* //'>)} {($ Id.VSub_DollarName tmp)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] )