(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tempfile)
          op: assign_op.Equal
          rhs: {(DQ (/tmp/available.) ($ Id.VSub_Dollar '$$'))}
          spids: [11]
        )
      ]
    )
    (C {(trap)} {(DQ ('rm -f ') ($ Id.VSub_DollarName '$tempfile'))} {(EXIT)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:30)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:33))}
          here_end_span_id: 45
          stdin_parts: [
            ('    { sum += $4 }\n')
            ('END { mb = sum / 1024\n')
            ('      gb = mb / 1024\n')
            ('      printf "%.0f MB (%.2fGB) of available disk space\\n", mb, gb\n')
            ('    }\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:36)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$tempfile')}
        )
      ]
    )
    (command.Pipeline
      children: [(C {(df)} {(-k)}) (C {(awk)} {(-f)} {($ Id.VSub_DollarName '$tempfile')})]
      negated: F
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:60) arg_word:{(0)})
  ]
)