(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: [44] ) ] spids: [44] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:REQUESTS) op:Equal rhs:{(DQ ('1 2 10'))} spids:[49])] spids: [49] ) (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 78] ) ] spids: [-1 87] ) (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: [90] ) ] spids: [90] ) (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: [130] ) ] spids: [130] ) (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 156] ) ] spids: [-1 162] ) (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: [252] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [256] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [260] ) ] spids: [260] ) (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 277] ) ] 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: [288 328] ) ] spids: [198 331] ) spids: [192 196] ) ] spids: [184 334] ) spids: [178 182] ) ] spids: [127 336] ) spids: [121 125] ) (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)}) (C {(rm)} {(-f)} {($ VSub_Name '$SFTPCMDFILE')}) ] )