(command.CommandList
  children: [
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 16
              stdin_parts: [
                <'Git Howto Index\n'>
                <'===============\n'>
                <'\n'>
                <'Here is a collection of mailing list postings made by various\n'>
                <'people describing how they use Git in their workflow.\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ForEach
      iter_name: txt
      do_arg_iter: T
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:title)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<expr>} {(DQ ($ Id.VSub_DollarName '$txt'))} {<Id.Lit_Colon ':'>} 
                            {(SQ <'.*/\\(.*\\)\\.txt$'>)}
                          )
                      )
                    }
                  spids: [25]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:from)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<sed>} {<-ne>} 
                            {
                              (SQ <'\n'> <'\t/^$/q\n'> <'\t/^From:[ \t]/{\n'> <'\t\ts///\n'> 
                                <'\t\ts/^[ \t]*//\n'> <'\t\ts/[ \t]*$//\n'> <'\t\ts/^/by /\n'> <'\t\tp\n'> <'\t}\n'> <'\t'>
                              )
                            } {(DQ ($ Id.VSub_DollarName '$txt'))}
                          )
                      )
                    }
                  spids: [41]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:abstract)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<sed>} {<-ne>} 
                            {
                              (SQ <'\n'> <'\t/^Abstract:[ \t]/{\n'> <'\t\ts/^[^ \t]*//\n'> <'\t\tx\n'> 
                                <'\t\ts/.*//\n'> <'\t\tx\n'> <'\t\t: again\n'> <'\t\t/^[ \t]/{\n'> <'\t\t\ts/^[ \t]*//\n'> <'\t\t\tH\n'> <'\t\t\tn\n'> 
                                <'\t\t\tb again\n'> <'\t\t}\n'> <'\t\tx\n'> <'\t\tp\n'> <'\t\tq\n'> <'\t}'>
                              )
                            } {(DQ ($ Id.VSub_DollarName '$txt'))}
                          )
                      )
                    }
                  spids: [67]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [
                            {<grep>}
                            {(SQ <'Content-type: text/asciidoc'>)}
                            {($ Id.VSub_DollarName '$txt')}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:file)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<expr>} {(DQ ($ Id.VSub_DollarName '$txt'))} {<Id.Lit_Colon ':'>} 
                                    {(SQ <'\\(.*\\)\\.txt$'>)}
                                  )
                              ) <.html>
                            }
                          spids: [117]
                        )
                      ]
                    )
                  ]
                  spids: [100 114]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:file)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$txt'))}
                      spids: [137]
                    )
                  ]
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ <'* link:'> ($ Id.VSub_DollarName '$file') <'['> ($ Id.VSub_DollarName '$title') 
                  <'] '> ($ Id.VSub_DollarName '$from') <'\n'> ($ Id.VSub_DollarName '$abstract') <'\n'> <'\n'>
                )
              }
            )
          ]
        )
    )
  ]
)