(command.CommandList children: [ (C {(Id.Lit_Other ':')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OS) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:53) command_list: (command.CommandList children:[(C {(uname)})]) ) } spids: [52] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OSREL) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:60) command_list: (command.CommandList children:[(C {(uname)} {(-r)})]) ) } spids: [59] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OSMAJOR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:69) command_list: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(.)} spids: [72] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:74) ) (command.Sentence child: (C {(Id.KW_Set set)} {($ Id.VSub_DollarName '$OSREL')}) terminator: (Token id:Id.Op_Semi val:';' span_id:79) ) (C {(echo)} {($ Id.VSub_Number '$1')}) ] ) ) } spids: [68] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:machine) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:87) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(uname)} {(-p)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:94) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(uname)} {(-m)}) ] ) ] ) ) } spids: [86] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: (word.Empty) spids: [104] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$machine'))} arms: [ (case_arm pat_list: [ {(unknown)} {(Id.Lit_Star '*') (Id.Lit_LBracket '[') (Id.KW_Bang '!') (A-Za-z0-9_-) (Id.Lit_RBracket ']') (Id.Lit_Star '*') } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:machine) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:133) command_list: (command.CommandList children:[(C {(uname)} {(-m)})]) ) } spids: [132] ) ] ) ] spids: [121 129 142 -1] ) ] ) (command.ShFunction name: Which body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_dirs) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:169) command_list: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(Id.Lit_Other ':')} spids: [172] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:174) ) (C {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:179) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$PATH')} ) ) } ) ] ) ) } spids: [168] ) ] ) (command.ForEach iter_name: d iter_words: [{($ Id.VSub_DollarName '$_dirs')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-x)} {($ Id.VSub_DollarName '$d') (/) ($ Id.VSub_Number '$1')}) (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {($ Id.VSub_DollarName '$d') (/) ($ Id.VSub_Number '$1')}) terminator: (Token id:Id.Op_Semi val:';' span_id:215) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:217) ) terminator: (Token id:Id.Op_Semi val:';' span_id:218) ) ] ) ] ) ] ) ) ] ) ) (command.Case to_match: {($ Id.VSub_DollarName '$OS')} arms: [ (case_arm pat_list: [{(OpenBSD)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OS') ($ Id.VSub_DollarName '$OSMAJOR') (.) ($ Id.VSub_DollarName '$machine') } spids: [238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arch) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:246) command_list: (command.CommandList children: [ (C {(Which)} {(arch)} {(/usr/bin) (Id.Lit_Other ':') (/usr/ucb) (Id.Lit_Other ':') ($ Id.VSub_DollarName '$PATH') } ) ] ) ) } spids: [245] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:262) command_list: (command.CommandList children: [(C {($ Id.VSub_DollarName '$arch')} {(-s)})] ) ) } spids: [261] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:269) ) ] spids: [234 235 272 -1] ) (case_arm pat_list: [{(Bitrig)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OS') ($ Id.VSub_DollarName '$OSMAJOR') (.) ($ Id.VSub_DollarName '$machine') } spids: [278] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:286) command_list: (command.CommandList children:[(C {(uname)} {(-m)})]) ) } spids: [285] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:293) ) ] spids: [274 275 296 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*') (BSD)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OS') ($ Id.VSub_DollarName '$OSMAJOR') (.) ($ Id.VSub_DollarName '$machine') } spids: [303] ) ] ) ] spids: [298 300 310 -1] ) (case_arm pat_list: [{(SunOS)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arch) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:317) command_list: (command.CommandList children: [ (C {(Which)} {(arch)} {(/usr/bin) (Id.Lit_Other ':') (/usr/ucb) (Id.Lit_Other ':') ($ Id.VSub_DollarName '$PATH') } ) ] ) ) } spids: [316] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$arch'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:machine_arch) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:341) command_list: (command.CommandList children: [(C {($ Id.VSub_DollarName '$arch')})] ) ) } spids: [340] ) ] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$OSREL'))} arms: [ (case_arm pat_list: [{(4.0) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$machine_arch')} spids: [362] ) (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$machine_arch')} spids: [365] ) ] ) ] spids: [358 360 367 -1] ) (case_arm pat_list: [{(4) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$machine_arch')} spids: [374] ) ] ) ] spids: [370 372 376 -1] ) ] ) ] spids: [312 313 382 -1] ) (case_arm pat_list: [{(HP-UX)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:389) command_list: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ (/-.))} spids: [392] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:396) ) (command.Sentence child: (C {(Id.KW_Set set)} {($ Id.VSub_DollarName '$machine')}) terminator: (Token id:Id.Op_Semi val:';' span_id:401) ) (C {(echo)} {($ Id.VSub_Number '$1')}) ] ) ) } spids: [388] ) ] ) ] spids: [384 385 409 -1] ) (case_arm pat_list: [{(Interix)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: {(i386)} spids: [415] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: {(i386)} spids: [419] ) ] ) ] spids: [411 412 423 -1] ) (case_arm pat_list: [{(UnixWare)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OSREL) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:430) command_list: (command.CommandList children:[(C {(uname)} {(-v)})]) ) } spids: [429] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OSMAJOR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:440) command_list: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(.)} spids: [443] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:445) ) (command.Sentence child: (C {(Id.KW_Set set)} {($ Id.VSub_DollarName '$OSREL')}) terminator: (Token id:Id.Op_Semi val:';' span_id:450) ) (C {(echo)} {($ Id.VSub_Number '$1')}) ] ) ) } spids: [439] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:459) command_list: (command.CommandList children:[(C {(uname)} {(-m)})]) ) } spids: [458] ) ] ) ] spids: [425 426 468 -1] ) (case_arm pat_list: [{(Linux)}] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$machine'))} arms: [ (case_arm pat_list: [{(i) (Id.Lit_QMark '?') (86)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: {(i386)} spids: [488] ) ] ) ] spids: [483 486 490 -1] ) ] ) ] spids: [470 471 498 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:MACHINE span_id:505) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$OS') ($ Id.VSub_DollarName '$OSMAJOR')} ) ) } spids: [503] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MACHINE_ARCH) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:MACHINE_ARCH span_id:513) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$machine')} ) ) } spids: [511] ) ] ) (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$0'))} arms: [ (case_arm pat_list: [{(arch) (Id.Lit_Star '*')}] action: [(C {(echo)} {($ Id.VSub_DollarName '$MACHINE_ARCH')})] spids: [529 531 536 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(DQ )}] action: [(C {(echo)} {($ Id.VSub_DollarName '$MACHINE')})] spids: [551 553 558 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(echo)} {($ Id.VSub_DollarName '$MACHINE_ARCH')})] spids: [561 562 567 -1] ) ] ) ] spids: [538 539 573 -1] ) ] ) ] ) ) (C {(tr)} {(ABCDEFGHIJKLMNOPQRSTUVWXYZ)} {(abcdefghijklmnopqrstuvwxyz)}) ] negated: F ) ] )