(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'expand %h and %n'>)} spids: [7] ) ] ) (command.Simple words: [{<echo>} {(SQ <'PermitLocalCommand yes'>)}] redirects: [ (redir.Redir op: <Id.Redir_DGreat '>>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$OBJ') </ssh_proxy>} ) ] ) (command.Simple words: [{<printf>} {(SQ <'LocalCommand printf "%%%%s\\\\n" "%%n" "%%h"\\n'>)}] redirects: [ (redir.Redir op: <Id.Redir_DGreat '>>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$OBJ') </ssh_proxy>} ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$OBJ') </expect>} ) (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOE>} here_end_span_id: 48 stdin_parts: [<'somehost\n'> <'127.0.0.1\n'>] ) ] ) (command.ForEach iter_name: p iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}] do_arg_iter: F body: (command.DoGroup children: [ (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': proto '> ($ Id.VSub_DollarName '$p'))} ) (command.Simple words: [ {(${ Id.VSub_Name SSH)} {<-F>} {($ Id.VSub_DollarName '$OBJ') </ssh_proxy>} {<-> ($ Id.VSub_DollarName '$p')} {<somehost>} {<true>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$OBJ') </actual>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<diff>} {($ Id.VSub_DollarName '$OBJ') </expect>} {($ Id.VSub_DollarName '$OBJ') </actual>} ) (C {<fail>} {(DQ ($ Id.VSub_DollarName '$tid') <' proto '> ($ Id.VSub_DollarName '$p'))}) ] ) ] ) ) ] )