(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {(DQ ('basic sftp put/get with ssh.com server'))} spids: [7] ) ] spids: [7] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SFTPCMDFILE) op: Equal rhs: {(${ VSub_Name OBJ) (/batch)} spids: [13] ) ] spids: [13] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$SFTPCMDFILE')} spids:[22]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('version\n') ('get ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) ('.1\n') ('put ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) ('.2\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [25] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BUFFERSIZE) op: Equal rhs: {(DQ ('5 1000 32000 64000'))} spids: [45] ) ] spids: [45] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:REQUESTS) op:Equal rhs:{(DQ ('1 2 10'))} spids:[50])] spids: [50] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (X) (${ VSub_Name TEST_COMBASE))} {(Lit_Other '=')} {(DQ (X))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fatal)} {(SQ <'$TEST_COMBASE is not set'>)})] spids: [-1 79] ) ] spids: [-1 88] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VERSIONS) op: Equal rhs: { (DQ ('\n') ('\t2.0.10\n') ('\t2.0.12\n') ('\t2.0.13\n') ('\t2.1.0\n') ('\t2.2.0\n') ('\t2.3.0\n') ('\t2.3.1\n') ('\t2.4.0\n') ('\t3.0.0\n') ('\t3.1.0\n') ('\t3.2.0\n') ('\t3.2.2\n') ('\t3.2.3\n') ('\t3.2.5\n') ('\t3.2.9\n') ('\t3.2.9.1\n') ('\t3.3.0') ) } spids: [91] ) ] spids: [91] ) (ForEach iter_name: v iter_words: [{(${ VSub_Name VERSIONS)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:server) op: Equal rhs: {(${ VSub_Name TEST_COMBASE) (/) (${ VSub_Name v) (/sftp-server2)} spids: [131] ) ] spids: [131] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} {(${ VSub_Name server)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Continue continue>)] spids: [-1 157] ) ] spids: [-1 163] ) (C {(verbose)} {(DQ ('sftp-server ') ($ VSub_Name '$v'))}) (ForEach iter_name: B iter_words: [{(${ VSub_Name BUFFERSIZE)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: R iter_words: [{(${ VSub_Name REQUESTS)}] do_arg_iter: False body: (DoGroup children: [ (C {(verbose)} { (DQ ('test ') ($ VSub_Name '$tid') (': buffer_size ') ($ VSub_Name '$B') (' num_requests ') ($ VSub_Name '$R') ) } ) (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)}) (SimpleCommand words: [ {(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name server)} {(-B)} {($ VSub_Name '$B')} {(-R)} {($ VSub_Name '$R')} {(-b)} {($ VSub_Name '$SFTPCMDFILE')} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [253] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [257] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [261] ) ] spids: [261] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('sftp failed with ') ($ VSub_Name '$r'))})] spids: [-1 278] ) ] else_action: [ (AndOr children: [ (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.1)}) (C {(fail)} {(DQ ('corrupted copy after get'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.2)}) (C {(fail)} {(DQ ('corrupted copy after put'))}) ] op_id: Op_DPipe ) ] spids: [289 329] ) ] spids: [199 332] ) spids: [193 197] ) ] spids: [185 335] ) spids: [179 183] ) ] spids: [128 337] ) spids: [122 126] ) (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)}) (C {(rm)} {(-f)} {($ VSub_Name '$SFTPCMDFILE')}) ] )