(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst_dir) op: assign_op.Equal rhs: {(DQ <'/etc/opt/csw/unbound'>)} spids: [23] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:work_dir) op: assign_op.Equal rhs: {(DQ <'/tmp'>)} spids: [28] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:list_addr) op: assign_op.Equal rhs: { (DQ < 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=' > ) } spids: [33] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CAT) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<cat>}))} spids: [42] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ECHO) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<echo>}))} spids: [51] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WGET) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<wget>}))} spids: [60] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName '$WGET')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Wget not found. Exiting...'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [73 86] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$WGET')} {<-O>} {($ Id.VSub_DollarName '$work_dir') <'/yoyo_ad_servers'>} {(DQ ($ Id.VSub_DollarName '$list_addr'))} ) (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$CAT')} {($ Id.VSub_DollarName '$work_dir') <'/yoyo_ad_servers'>} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<line>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.Sentence child: (C {($ Id.VSub_DollarName '$ECHO')} { (DQ <'local-zone: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$line') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' redirect'> ) } ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {($ Id.VSub_DollarName '$ECHO')} { (DQ <'local-data: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$line') <' A 127.0.0.1'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$dst_dir') <'/unbound_ad_servers'>} ) ] ) ] negated: F ) ] ) (C {<echo>} {(DQ <Done.>)}) ] )