(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<generate>} {<local>} {<host>} {<info>}] redirects: [] do_fork: T ) (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.Sentence child: (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>} {<ksh>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_Number 0) <': ksh required'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<Id.Lit_VarLike 'cluster='> <5>}] redirects: [] do_fork: T ) (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: {<.>} ) ] 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 'heading='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'heading='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rsh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rsh='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rsh='> name:rsh) op: assign_op.Equal rhs: {<rsh>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'timeout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'timeout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'timeout='> name:timeout) op: assign_op.Equal rhs: {<90>} ) ] 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: {<Id.Lit_Colon ':'>} ) ] 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: <-> pattern: (pat.Words words: [{<-> <Id.Lit_LBracket '['> <frt> <Id.Lit_RBracket ']'>}] ) 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>} {<-->} {(SQ <'-?'>)}] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-f> pattern: (pat.Words words:[{<-f>}]) middle: <Id.Right_CasePat _> action: [ (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_Number 2)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-r> pattern: (pat.Words words:[{<-r>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rsh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rsh='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rsh='> name:rsh) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-t> pattern: (pat.Words words:[{<-t>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'timeout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'timeout='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'timeout='> name: timeout ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] 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.Op_DSemi _> ) (CaseArm left: <-h> pattern: (pat.Words words:[{<-h>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'heading='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'heading='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-n> pattern: (pat.Words words:[{<-n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-v> pattern: (pat.Words words:[{<-v>}]) 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: {(SQ <'print -u2'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (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 _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {(DQ ($ Id.VSub_Number 0) <': '> ($ Id.VSub_Number 1) <': invalid option'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {(SQ <'-?'>)}] 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 '*'>}]) 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.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: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ <'Usage: '> ($ Id.VSub_Number 0) <' [-hnv] [-f share-file] [-r rsh-path] [-t timeout] [host ...]'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (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 file)}) 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 '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 '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.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ )} {($ Id.VSub_DollarName PATH)} {(DQ <-->)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (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 '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: {<'lib/cs/share'>} ) ] 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_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_Continue continue>)] right: <Id.Op_DSemi _> ) (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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<bin>} ) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName f) } ] redirects: [] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<bin>} ) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] 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>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {($ Id.VSub_Number 0) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName f) <Id.Lit_Colon ':'>} {<not>} {<found>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (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: <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: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_Number 0) <': '> ($ Id.VSub_DollarName file) <': cannot read share file'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [552 563] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_Number 0) <': warning: '> ($ Id.VSub_DollarName rsh) <' may hang on some hosts -- monitor the progress with the -v option or ps '> ($ Id.VSub_Dollar '$') ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'server='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'server='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] ) 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 server)}) 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 'server='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'server='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server) op: assign_op.Equal rhs: {($ Id.VSub_DollarName host)} ) ] 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 'server='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'server='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName server) <'|'> ($ Id.VSub_DollarName host))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hostname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hostname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <package> more_env: [] words: [{<package>} {<host>} {<name>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hostname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hostname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name hostname> var_name: hostname suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_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 'domain='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'domain='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domain='> name:domain) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/etc/hosts'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ypcat> more_env: [] words: [{<ypcat>} {<hosts>}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} { (DQ <'[^#].*[ \t]'> ($ Id.VSub_DollarName hostname) <'('> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'|[. \t])'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'1!d'>)} {<-e>} {(SQ <'s/^[^ \t]*//'>)} {<-e>} {(SQ <'s/[^.]*.//'>)} {<-e>} {(SQ <'s/[ \t].*//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(DQ ($ Id.VSub_DollarName hostname))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <ruptime> more_env: [] words: [{<ruptime>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {<-v>} {(SQ <'no hosts'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<'/etc/resolv.conf'>} {<'/usr/etc/resolv.conf'>}] ) 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 i)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'ls -t A '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/^domain/!d'>)} {<-e>} {(SQ <'s/.*[ ][ \t]*//'>)} {($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <nslookup> more_env: [] words: [{<nslookup>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [808 817] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/etc/hosts'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ypcat> more_env: [] words: [{<ypcat>} {<hosts>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(DQ <.> ($ Id.VSub_DollarName domain))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{print $2}'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s/[. \t].*//'>)} {<-e>} {(SQ <'/^[a-zA-Z].*[a-zA-Z0-9]$/!d'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName list)}) 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: <print> more_env: [] words: [{<print>} {<Id.Lit_VarLike 'domain='> ($ Id.VSub_DollarName domain)}] 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 list)}) 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.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<Id.Lit_VarLike 'hosts='> (SQ <'"'>) ($ Id.VSub_Star '*') (SQ <'"'>)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter__Args) 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 host)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <local> pattern: (pat.Words words:[{<local>} {<localhost>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: {($ Id.VSub_DollarName hostname)} ) ] 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 hosts) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName host) <' '>) <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 'hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName hosts) <' '> ($ Id.VSub_DollarName host))} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$verbose'> more_env: [] words: [ {($ Id.VSub_DollarName verbose)} {<-n>} {(DQ ($ Id.VSub_DollarName host) <' '>)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$hostname'> pattern: (pat.Words words:[{($ Id.VSub_DollarName hostname)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <package> more_env: [] words: [{<package>} {<host>} {<name>} {<type>} {<cpu>} {<rating>}] 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: <ping> more_env: [] words: [ {<ping>} {<-c>} {<1>} {<-w>} {<4>} {($ Id.VSub_DollarName host)} ] 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.Sentence child: (command.Simple blame_tok: <Id.VSub_DollarName '$rsh'> more_env: [] words: [ {($ Id.VSub_DollarName rsh)} {($ Id.VSub_DollarName host)} {<'bin/package'>} {<host>} {<name>} {<type>} {<cpu>} {<rating>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Amp _> ) (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_Bang '!')} ) ] redirects: [] ) (command.Sentence child: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {($ Id.VSub_DollarName timeout)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <kill> more_env: [] words: [{<kill>} {<-9>} {($ Id.VSub_DollarName info)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) terminator: <Id.Op_Amp _> ) (command.ShAssignment left: <Id.Lit_VarLike 'time='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'time='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'time='> name:time) op: assign_op.Equal rhs: {($ Id.VSub_Bang '!')} ) ] redirects: [] ) (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>} {($ Id.VSub_DollarName info)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <kill> more_env: [] words: [{<kill>} {<-9>} {($ Id.VSub_DollarName time)}] redirects: [] do_fork: T ) ] spids: [1081 1102] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<host>} {<type>} {<cpu>} {<rating>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$verbose'> more_env: [] words: [ {($ Id.VSub_DollarName verbose)} {<Id.Lit_VarLike 'type='> ($ Id.VSub_DollarName type)} {<Id.Lit_VarLike 'cpu='> ($ Id.VSub_DollarName cpu)} {<Id.Lit_VarLike 'rating='> ($ Id.VSub_DollarName rating)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name host> var_name: host suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'case \''> ($ Id.VSub_DollarName host) <'\' in\n'> <'\t'> ($ Id.VSub_DollarName server) <')\tidle= ;;\n'> <'\t*)\t\tidle=15m ;;\n'> <'\tesac'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {($ Id.VSub_DollarName host) (DQ <'\t'>) <Id.Lit_VarLike 'type='> ($ Id.VSub_DollarName type) (DQ <'\t'>) (${ Id.VSub_Name rating) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name idle> var_name: idle suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ <'\tidle='> ($ Id.VSub_DollarName idle))} ) right: <Id.Right_DollarBrace '}'> ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cpu> var_name: cpu suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ <'\tcpu='> ($ Id.VSub_DollarName cpu))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-b>} {<Id.Lit_Other '+'> <2n>} {<-3>}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<v>} {<c>} {<d>} {<i>} {<j>} {<k>} {<n>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike n) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<host>} {<type>} {<rate>} {<attr>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike n) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike n) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'h['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'h['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'h['> name: h index: ($ Id.Lit_ArithVarLike n) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName host)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 't['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 't['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 't['> name: t index: ($ Id.Lit_ArithVarLike n) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'v['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'v['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'v['> name: v index: ($ Id.Lit_ArithVarLike n) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName rate)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'a['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'a['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'a['> name: a index: ($ Id.Lit_ArithVarLike n) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName attr)} ) ] 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: {<1>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike c) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike n) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike d) right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DAmp left: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike d) right: {<Id.Lit_Digits 1>} ) right: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike d) right: ($ Id.Lit_ArithVarLike cluster) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike d) right: (arith_expr.Binary op_id: Id.Arith_Slash left: ($ Id.Lit_ArithVarLike d) right: {<Id.Lit_Digits 2>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) right: ($ Id.Lit_ArithVarLike d) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: ($ Id.Lit_ArithVarLike d) ) ) right: <Id.Op_DRightParen _> 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: [] ) ] spids: [1421 1435] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike n) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike j) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike k) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike j) right: ($ Id.Lit_ArithVarLike n) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_Great left: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike j) ) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike j) right: {<Id.Lit_Digits 1>} ) ) ) right: {<Id.Lit_Digits 1>} ) right: (arith_expr.Binary op_id: Id.Arith_Great left: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike j) ) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) ) right: ($ Id.Lit_ArithVarLike cluster) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] spids: [1567 1603] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike j) ) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike k) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike k) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike j) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike j) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_Slash left: ($ Id.Lit_ArithVarLike c) right: ($ Id.Lit_ArithVarLike k) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike d) right: (arith_expr.Binary op_id: Id.Arith_Percent left: ($ Id.Lit_ArithVarLike c) right: {<Id.Lit_Digits 10>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike c) right: ($ Id.Lit_ArithVarLike d) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike d) right: {<Id.Lit_Digits 6>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike c) right: {<Id.Lit_Digits 10>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [1677 1687] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike d) right: {<Id.Lit_Digits 3>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike c) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike c) right: {<Id.Lit_Digits 5>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [1699 1709] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike j) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike v) right: ($ Id.Lit_ArithVarLike i) ) right: ($ Id.Lit_ArithVarLike c) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike n) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'rate='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rate='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rate='> name:rate) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name v> var_name: v bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name h> var_name: h bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name t> var_name: t bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) } {<Id.Lit_VarLike 'rating='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name v> var_name: v bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) (DQ <'\t'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-b>} {<Id.Lit_Other '+'> <1>} {<-2>} {<Id.Lit_Other '+'> <2.7n>} {<-3>} {<Id.Lit_Other '+'> <0>} {<-1>} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<host>} {<type>} {<attr>}] 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 heading)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(SQ <'#'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(SQ <'# local host attributes'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(SQ <'#'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(SQ <'local\t\tbusy=2m\t\tpool=9'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {($ Id.VSub_DollarName type)}]) 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: <print> more_env: [] words: [{<print>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'heading='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'heading='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)}) 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 '?'> <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 'tab1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab1='> name:tab1) op: assign_op.Equal rhs: {(DQ <'\t'>)} ) ] 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 'tab1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab1='> name:tab1) op: assign_op.Equal rhs: {(DQ <'\t\t'>)} ) ] 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 type)}) 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 '?'> <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 'tab2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab2='> name:tab2) op: assign_op.Equal rhs: {(DQ <'\t'>)} ) ] 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 'tab2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab2='> name:tab2) op: assign_op.Equal rhs: {(DQ <'\t\t'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {($ Id.VSub_DollarName host) (DQ ($ Id.VSub_DollarName tab1)) ($ Id.VSub_DollarName type) (DQ ($ Id.VSub_DollarName tab2) ($ Id.VSub_DollarName attr)) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] )