(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:outfile)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp/rb.'> ($ Id.VSub_Dollar '$$') <.tgz>)}
          spids: [22]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:outfname)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <backup.> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<date>} 
                      {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <y> <Id.Lit_Other '%'> <m> 
                        <Id.Lit_Other '%'> <d>
                      }
                    )
                ) <.tgz>
              )
            }
          spids: [29]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:infile)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp/rb.'> ($ Id.VSub_Dollar '$$') <.in>)}
          spids: [46]
        )
      ]
    )
    (C {<trap>} 
      {
        (DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<rm>})) <' -f '> 
          ($ Id.VSub_DollarName '$outfile') <' '> ($ Id.VSub_DollarName '$infile')
        )
      } {<0>}
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<2>} {<-a>} 
                      {($ Id.VSub_Pound '$#')} {<-ne>} {<3>} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<basename>} {($ Id.VSub_Number '$0')})
                    ) <' backup-file-list remoteaddr {targetdir}'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [73 95]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-s>} {(DQ ($ Id.VSub_Number '$1'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'Error: backup list '> ($ Id.VSub_Number '$1') <' is empty or missing'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [121 137]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [(command.Sentence child:(C {<read>} {<entry>}) terminator:<Id.Op_Semi _>)]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$entry'))})
                (command.Simple
                  words: [{<sed>} {<-e>} {(SQ <'s/ /\\\\ /g'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName '$infile')}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
          ]
        )
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {(DQ ($ Id.VSub_Number '$1'))}
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<tar>} {<czf>} {<->} 
          {
            (command_sub
              left_token: <Id.Left_DollarParen '$('>
              child: (C {<cat>} {($ Id.VSub_DollarName '$infile')})
            )
          }
        )
        (C {<uuencode>} {($ Id.VSub_DollarName '$outfname')})
        (C {<mail>} {<-s>} 
          {
            (DQ 
              (braced_var_sub
                token: <Id.VSub_Number 3>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: 
                      {<'Backup archive for '> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<date>})
                        )
                      }
                  )
              )
            )
          } {(DQ ($ Id.VSub_Number '$2'))}
        )
      ]
      negated: F
    )
    (C {<echo>} 
      {
        (DQ <'Done. '> 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<basename>} {($ Id.VSub_Number '$0')})
          ) <' backed up the following files:'>
        )
      }
    )
    (C {<sed>} {(SQ <'s/^/   /'>)} {($ Id.VSub_DollarName '$infile')})
    (C {<echo>} {<-n>} {(DQ <'and mailed them to '> ($ Id.VSub_Number '$2') <' '>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_Number '$3'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<echo>} {(DQ <'with requested target directory '> ($ Id.VSub_Number '$3'))})]
          spids: [287 303]
        )
      ]
      else_action: [(C {<echo>} {(DQ )})]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)