(command.CommandList children: [ (C {<'/bin/echo'>} {<-n>} {(DQ <'User account: '>)}) (C {<read>} {<account>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {($ Id.VSub_DollarName '$account')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [21 33] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] action: [ (C {<'/bin/echo'>} {<-n>} {(DQ <'Remote host: '>)}) (C {<read>} {<host>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {($ Id.VSub_DollarName '$host')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [78 90] ) ] ) ] spids: [47 61] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:host) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [103] ) ] ) ] ) (C {<exec>} {<sftp>} {<-C>} {($ Id.VSub_DollarName '$account') <Id.Lit_Other '@'> ($ Id.VSub_DollarName '$host')} ) ] )