(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmpfiles)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [14]
        )
      ]
    )
    (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'rm -fr $tmpfiles' span_id:21))} {(1)} {(2)} {(3)} {(15)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmpfiles)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$tmpfiles') (' t-select-in.tmp'))}
          spids: [33]
        )
      ]
    )
    (C {(rm)} {(-f)} {(t-select-in.tmp)})
    (command.Simple
      words: [{(./test-select-fd) (${ Id.VSub_Name EXEEXT)} {(r)} {(0)} {(t-select-in.tmp)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Less val:'<' span_id:61)
          fd: -1
          arg_word: {(./test-select-fd) (${ Id.VSub_Name EXEEXT)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} 
          {
            (command_sub
              left_token: (Token id:Id.Left_Backtick val:'`' span_id:70)
              command_list: (command.CommandList children:[(C {(cat)} {(t-select-in.tmp)})])
            )
          } {(Id.Lit_Equals '=')} {(DQ (1))}
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:86)
          arg_word: {(1)}
        )
      ]
    )
    (C {(rm)} {(-f)} {(t-select-in.tmp)})
    (command.Pipeline
      children: [
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sleep)} {(1)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:106)
            )
            (command.Sentence
              child: (C {(echo)} {(abc)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:111)
            )
          ]
        )
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(./test-select-fd) (${ Id.VSub_Name EXEEXT)} {(r)} {(0)} {(t-select-in.tmp)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:131)
            )
            (command.Sentence
              child: 
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:135)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:138)
            )
          ]
        )
      ]
      negated: F
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} 
          {
            (command_sub
              left_token: (Token id:Id.Left_Backtick val:'`' span_id:144)
              command_list: (command.CommandList children:[(C {(cat)} {(t-select-in.tmp)})])
            )
          } {(Id.Lit_Equals '=')} {(DQ (0))}
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:160)
          arg_word: {(1)}
        )
      ]
    )
    (C {(rm)} {(-f)} {(t-select-in.tmp)})
    (command.Pipeline
      children: [
        (C {(echo)} {(abc)})
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sleep)} {(1)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:182)
            )
            (command.Sentence
              child: (C {(./test-select-fd) (${ Id.VSub_Name EXEEXT)} {(r)} {(0)} {(t-select-in.tmp)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:194)
            )
          ]
        )
      ]
      negated: F
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} 
          {
            (command_sub
              left_token: (Token id:Id.Left_Backtick val:'`' span_id:200)
              command_list: (command.CommandList children:[(C {(cat)} {(t-select-in.tmp)})])
            )
          } {(Id.Lit_Equals '=')} {(DQ (1))}
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:216)
          arg_word: {(1)}
        )
      ]
    )
    (C {(rm)} {(-f)} {(t-select-in.tmp)})
    (command.Simple
      words: [{(./test-select-fd) (${ Id.VSub_Name EXEEXT)} {(r)} {(0)} {(t-select-in.tmp)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Less val:'<' span_id:245)
          fd: -1
          arg_word: {(/dev/null)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} 
          {
            (command_sub
              left_token: (Token id:Id.Left_Backtick val:'`' span_id:251)
              command_list: (command.CommandList children:[(C {(cat)} {(t-select-in.tmp)})])
            )
          } {(Id.Lit_Equals '=')} {(DQ (1))}
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:267)
          arg_word: {(1)}
        )
      ]
    )
    (C {(rm)} {(-fr)} {($ Id.VSub_DollarName '$tmpfiles')})
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:279) arg_word:{(0)})
  ]
)