(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('expand %h and %n'))} spids:[7])] spids: [7] ) (SimpleCommand words: [{(echo)} {(SQ <'PermitLocalCommand yes'>)}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$OBJ') (/ssh_proxy)} spids: [19] ) ] ) (SimpleCommand words: [{(printf)} {(SQ <'LocalCommand printf "%%%%s\\\\n" "%%n" "%%h"\\n'>)}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$OBJ') (/ssh_proxy)} spids: [30] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$OBJ') (/expect)} spids:[38]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ('somehost\n') ('127.0.0.1\n'))} do_expansion: True here_end: EOE was_filled: True spids: [42] ) ] ) (ForEach iter_name: p iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}] do_arg_iter: False body: (DoGroup children: [ (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': proto ') ($ VSub_Name '$p'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_proxy)} {(-) ($ VSub_Name '$p')} {(somehost)} {(true)} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OBJ') (/actual)} spids: [89] ) ] ) (AndOr children: [ (C {(diff)} {($ VSub_Name '$OBJ') (/expect)} {($ VSub_Name '$OBJ') (/actual)}) (C {(fail)} {(DQ ($ VSub_Name '$tid') (' proto ') ($ VSub_Name '$p'))}) ] op_id: Op_DPipe ) ] spids: [60 112] ) spids: [54 58] ) ] )