(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <banner>)} spids: [7] ) ] ) (command.Simple words: [{<echo>} {(DQ <'Banner '> ($ Id.VSub_DollarName '$OBJ') <'/banner.in'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy'>} ) ] do_fork: T ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} {($ Id.VSub_DollarName '$OBJ') <'/empty.in'>} ) (C {<touch>} {($ Id.VSub_DollarName '$OBJ') <'/empty.in'>}) (C {<trace>} {(DQ <'test missing banner file'>)}) (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': missing banner file'>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {(${ Id.VSub_Name SSH)} {<-2>} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<otherhost>} {<true>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] do_fork: T ) (C {<cmp>} {($ Id.VSub_DollarName '$OBJ') <'/empty.in'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] ) ) (C {<fail>} {(DQ <'missing banner file'>)}) ] ) (command.ForEach iter_name: s iter_words: [{<0>} {<10>} {<100>} {<1000>} {<10000>} {<100000>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$s'))} {<Id.Lit_Equals '='>} {(DQ <0>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<touch>} {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>})] spids: [128 145] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$s'))} {<Id.Lit_Equals '='>} {(DQ <10>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <abcdefghi>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} ) ] do_fork: T ) ] spids: [158 175] ) ] else_action: [ (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) (command.ForEach iter_name: i iter_words: [{<0>} {<1>} {<2>} {<3>} {<4>} {<5>} {<6>} {<7>} {<8>}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<cat>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} ) ] do_fork: T ) ] ) ) ] ) (C {<trace>} {(DQ <'test banner size '> ($ Id.VSub_DollarName '$s'))}) (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': size '> ($ Id.VSub_DollarName '$s'))} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {(${ Id.VSub_Name SSH)} {<-2>} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<otherhost>} {<true>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] do_fork: T ) (C {<cmp>} {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] ) ) (C {<fail>} {(DQ <'banner size '> ($ Id.VSub_DollarName '$s') <' mismatch'>)}) ] ) ] ) ) (C {<trace>} {(DQ <'test suppress banner (-q)'>)}) (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': suppress banner (-q)'>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {(${ Id.VSub_Name SSH)} {<-q>} {<-2>} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<otherhost>} {<true>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] do_fork: T ) (C {<cmp>} {($ Id.VSub_DollarName '$OBJ') <'/empty.in'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} ) ] ) ) (C {<fail>} {(DQ <'suppress banner (-q)'>)}) ] ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$OBJ') <'/banner.out'>} {($ Id.VSub_DollarName '$OBJ') <'/banner.in'>} {($ Id.VSub_DollarName '$OBJ') <'/empty.in'>} ) ] )