(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:anonpass) op: Equal rhs: { (DQ ($ VSub_DollarName '$LOGNAME') ('@') (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children:[(C {(hostname)})]) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_Pound '$#')} {(-ne)} {(1)} {(Lit_RBracket ']')}) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [{(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' ftp://...'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (DQ (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-c1-6)})] negated: F ) ] ) ) ) } {(KW_Bang '!') (Lit_Equals '=')} {(DQ ('ftp://'))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Sentence child: (command.Simple words: [ {(echo)} {(DQ ($ VSub_Number '$0') (': Malformed url. I need it to start with ftp://'))} ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:server) op: Equal rhs: { (DQ (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d/)} {(-f3)})] negated: F ) ] ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: Equal rhs: { (DQ (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d/)} {(-f4-)})] negated: F ) ] ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basefile) op: Equal rhs: { (DQ (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$filename')})] ) ) ) } ) ] ) (C {(echo)} {(${ VSub_Number 0) (Lit_Other ':')} {(Downloading)} {($ VSub_DollarName '$basefile')} {(from)} {(server)} {($ VSub_DollarName '$server')} ) (command.Simple words: [{(ftp)} {(-np)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 200 stdin_parts: [ ('open ') ($ VSub_DollarName '$server') ('\n') ('user ftp ') ($ VSub_DollarName '$anonpass') ('\n') ('get ') (Right_DoubleQuote '"') ($ VSub_DollarName '$filename') (Right_DoubleQuote '"') (' ') (Right_DoubleQuote '"') ($ VSub_DollarName '$basefile') (Right_DoubleQuote '"') ('\n') ('quit\n') ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_RBracket ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(ls)} {(-l)} {($ VSub_DollarName '$basefile')})] ) ] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] )