(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {(DQ ('basic sftp put/get'))} 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: 16777215 arg_word: {($ VSub_Name '$SFTPCMDFILE')} spids: [21] ) (HereDoc op_id: Redir_DLess fd: 16777215 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: [24] ) ] ) (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] ) (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 SFTPSERVER)} {(-B)} {($ VSub_Name '$B')} {(-R)} {($ VSub_Name '$R')} {(-b)} {($ VSub_Name '$SFTPCMDFILE')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [134] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [138] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [142] ) ] spids: [142] ) (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: [16777215 159] ) ] 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: [170 210] ) ] spids: [80 213] ) spids: [74 78] ) ] spids: [66 215] ) spids: [60 64] ) (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)}) (C {(rm)} {(-f)} {($ VSub_Name '$SFTPCMDFILE')}) ] )