(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number '$1'))}) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:64) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLUSTERNAME) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [69] ) ] ) ] spids: [51 66] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id:Id.BoolUnary_f child:{(DQ (cluster.txt))}) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:89) ) ] action: [ (C {(DQ ('Error: cluster.txt not found'))}) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:99)) ] spids: [76 91] ) ] ) (C {(echo)} {(-e)} {(DQ ('<html>'))}) (C {(echo)} {(-e)} { (DQ ('<head>') (Id.Lit_Other '\\') ('n<title>Cluster ') ($ Id.VSub_DollarName '$CLUSTERNAME') (' members</title></head>') ) } ) (C {(echo)} {(-e)} {(DQ ('<body>'))}) (C {(echo)} {(-e)} { (DQ ('<font color=slategray>') (Id.Lit_Other '\\') ('n<h2>Cluster ') ($ Id.VSub_DollarName '$CLUSTERNAME') (' members</h2>') (Id.Lit_Other '\\') ('n</font>') ) } ) (C {(echo)} {(-e)} { (DQ ('<table border=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:151) ) (1) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:153)) ('>') ) } ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:157) cond: [ (command.Sentence child: (C {(read)} {(HOSTNAME)} {(MACADDR)} {(IPADDR)} {(ILOIPADDR)} {(DOMAIN)} {(ROLE)}) terminator: (Token id:Id.Op_Semi val:';' span_id:172) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ (head))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:192) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COLOR) op: assign_op.Equal rhs: {(red)} spids: [197] ) ] ) ] spids: [177 194] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ (bootstrap))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:216) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COLOR) op: assign_op.Equal rhs: {(purple)} spids: [221] ) ] ) ] spids: [201 218] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COLOR) op: assign_op.Equal rhs: {(black)} spids: [228] ) ] ) ] ) (C {(echo)} {(-e)} {(DQ ('<tr>'))}) (C {(echo)} {(-e)} {(DQ ('<td>') ($ Id.VSub_DollarName '$HOSTNAME') ('</td>'))}) (C {(echo)} {(-e)} { (DQ ('<td><a href=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:261) ) ('https://') ($ Id.VSub_DollarName '$IPADDR') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:264) ) ('>host</a></td>') ) } ) (C {(echo)} {(-e)} { (DQ ('<td><a href=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:275) ) ('https://') ($ Id.VSub_DollarName '$ILOIPADDR') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:278) ) ('>ilo</a></td>') ) } ) (C {(echo)} {(-e)} {(DQ ('<td>'))}) (C {(echo)} {(-e)} {(DQ ('<font color=') ($ Id.VSub_DollarName '$COLOR') ('>'))}) (C {(echo)} {(-e)} {(DQ ($ Id.VSub_DollarName '$ROLE'))}) (C {(echo)} {(-e)} {(DQ ('</font>'))}) (C {(echo)} {(-e)} {(DQ ('</td>'))}) (C {(echo)} {(-e)} {(DQ ('</tr>'))}) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:340) fd: -1 arg_word: {(cluster.txt)} ) ] ) (C {(echo)} {(-e)} {(DQ ('</table>'))}) (C {(echo)} {(-e)} {(DQ ('</body>'))}) (C {(echo)} {(-e)} {(DQ ('</html>'))}) ] )