(command.CommandList
  children: [
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:6)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:7)) (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')
          ]
        )
      ]
    )
    (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: (Token id:Id.Left_DollarParen val:'$(' span_id:26)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(expr)} {(DQ ($ Id.VSub_DollarName '$txt'))} {(Id.Lit_Other ':')} 
                                {(SQ (Token id:Id.Lit_Chars val:'.*/\\(.*\\)\\.txt$' span_id:36))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [25]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:from)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:42)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(sed)} {(-ne)} 
                                {
                                  (SQ (Token id:Id.Lit_Chars val:'\n' span_id:48) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t/^$/q\n'
                                      span_id: 49
                                    ) (Token id:Id.Lit_Chars val:'\t/^From:[ \t]/{\n' span_id:50) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\ts///\n'
                                      span_id: 51
                                    ) (Token id:Id.Lit_Chars val:'\t\ts/^[ \t]*//\n' span_id:52) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\ts/[ \t]*$//\n'
                                      span_id: 53
                                    ) (Token id:Id.Lit_Chars val:'\t\ts/^/by /\n' span_id:54) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\tp\n'
                                      span_id: 55
                                    ) (Token id:Id.Lit_Chars val:'\t}\n' span_id:56) (Token id:Id.Lit_Chars val:'\t' span_id:57)
                                  )
                                } {(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: (Token id:Id.Left_DollarParen val:'$(' span_id:68)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(sed)} {(-ne)} 
                                {
                                  (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t/^Abstract:[ \t]/{\n'
                                      span_id: 75
                                    ) (Token id:Id.Lit_Chars val:'\t\ts/^[^ \t]*//\n' span_id:76) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\tx\n'
                                      span_id: 77
                                    ) (Token id:Id.Lit_Chars val:'\t\ts/.*//\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tx\n' span_id:79) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\t: again\n'
                                      span_id: 80
                                    ) (Token id:Id.Lit_Chars val:'\t\t/^[ \t]/{\n' span_id:81) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\t\ts/^[ \t]*//\n'
                                      span_id: 82
                                    ) (Token id:Id.Lit_Chars val:'\t\t\tH\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\t\tn\n' span_id:84) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\t\tb again\n'
                                      span_id: 85
                                    ) (Token id:Id.Lit_Chars val:'\t\t}\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\tx\n' span_id:87) 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '\t\tp\n'
                                      span_id: 88
                                    ) (Token id:Id.Lit_Chars val:'\t\tq\n' span_id:89) (Token id:Id.Lit_Chars val:'\t}' span_id:90)
                                  )
                                } {(DQ ($ Id.VSub_DollarName '$txt'))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [67]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Simple
                      words: [
                        {(grep)}
                        {(SQ (Token id:Id.Lit_Chars val:'Content-type: text/asciidoc' span_id:105))}
                        {($ Id.VSub_DollarName '$txt')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:108)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:file)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:118)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {(DQ ($ Id.VSub_DollarName '$txt'))} 
                                        {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'\\(.*\\)\\.txt$' span_id:128))}
                                      )
                                    ]
                                  )
                              ) (.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')
                )
              }
            )
          ]
        )
    )
  ]
)