(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)})
  ]
)