(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-u> ($ Id.VSub_DollarName DX)}]
      redirects: []
      do_fork: T
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <2>
          pattern: (pat.Words words:[{<2>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'OLDTAB='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'OLDTAB='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLDTAB='> name:OLDTAB)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NEWTAB='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NEWTAB='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEWTAB='> name:NEWTAB)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <basename>
                          more_env: []
                          words: [{<basename>} {($ Id.VSub_Number 0)}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    ) <' <Input> <Output>'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {<-r>}
                    {($ Id.VSub_DollarName OLDTAB)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <basename>
                          more_env: []
                          words: [{<basename>} {($ Id.VSub_Number 0)}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    ) <': '> ($ Id.VSub_DollarName OLDTAB) <' does not exist or is unreadable.'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [152 164]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <touch>
                  more_env: []
                  words: [{<touch>} {($ Id.VSub_DollarName NEWTAB)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [190 200]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <basename>
                      more_env: []
                      words: [{<basename>} {($ Id.VSub_Number 0)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                ) <': cannot write to '> ($ Id.VSub_DollarName NEWTAB) <.>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END_OF_HEADER>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'# /etc/bootptab: database for bootp server (/etc/bootpd)\n'>
                <'# This file was generated automagically\n'>
                <'\n'>
                <'# Blank lines and lines beginning with \'#\' are ignored.\n'>
                <'#\n'>
                <'# Legend:\t(see bootptab.5)\n'>
                <'#\tfirst field -- hostname (not indented)\n'>
                <'#\tbf -- bootfile\n'>
                <'#\tbs -- bootfile size in 512-octet blocks\n'>
                <'#\tcs -- cookie servers\n'>
                <'#\tdf -- dump file name\n'>
                <'#\tdn -- domain name\n'>
                <'#\tds -- domain name servers\n'>
                <'#\tef -- extension file\n'>
                <'#\tgw -- gateways\n'>
                <'#\tha -- hardware address\n'>
                <'#\thd -- home directory for bootfiles\n'>
                <'#\thn -- host name set for client\n'>
                <'#\tht -- hardware type\n'>
                <'#\tim -- impress servers\n'>
                <'#\tip -- host IP address\n'>
                <'#\tlg -- log servers\n'>
                <'#\tlp -- LPR servers\n'>
                <'#\tns -- IEN-116 name servers\n'>
                <'#\tra -- reply address\n'>
                <'#\trl -- resource location protocol servers\n'>
                <'#\trp -- root path\n'>
                <'#\tsa -- boot server address\n'>
                <'#\tsm -- subnet mask\n'>
                <'#\tsw -- swap server\n'>
                <'#\ttc -- template host (points to similar host entry)\n'>
                <'#\ttd -- TFTP directory\n'>
                <'#\tto -- time offset (seconds)\n'>
                <'#\tts -- time servers\n'>
                <'#\tvm -- vendor magic number\n'>
                <'#\tTn -- generic option tag n\n'>
                <'#\n'>
                <'# Be careful about including backslashes where they\'re needed.  Weird (bad)\n'>
                <'# things can happen when a backslash is omitted where one is intended.\n'>
                <'# Also, note that generic option data must be either a string or a\n'>
                <'# sequence of bytes where each byte is a two-digit hex value.\n'>
                <'\n'>
                <'# First, we define a global entry which specifies the stuff every host uses.\n'>
                <'# (Host name lookups are relative to the domain: your.domain.name)\n'>
                <'\n'>
              ]
            )
        )
        (Redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName NEWTAB)}
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [{<sed>} {<-e>} {(SQ <'s/[:-]//g'>)}]
          redirects: [
            (Redir
              op: <Id.Redir_Less '<'>
              loc: (redir_loc.Fd fd:0)
              arg: {($ Id.VSub_DollarName OLDTAB)}
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <nawk>
          more_env: []
          words: [
            {<nawk>}
            {
              (SQ <'BEGIN\t{ PART = 0 ; FIELD=0 ; BOOTPATH="unset" ; BOOTFILE="unset" }\n'> 
                <'\t/^%%/\t{\n'> <'\t\t\t\tPART = 1\n'> 
                <
'\t\t\t\tprintf ".default:\\\\\\n\\t:ht=ether:\\\\\\n\\t:hn:\\\\\\n\\t:dn=your.domain.name:\\\\\\n\\t:ds=your,dns,servers:\\\\\\n\\t:sm=255.255.0.0:\\\\\\n\\t:hd=%s:\\\\\\n\\t:rp=%s:\\\\\\n\\t:td=%s:\\\\\\n\\t:bf=%s:\\\\\\n\\t:to=auto:\\n\\n", BOOTPATH, BOOTPATH, BOOTPATH, BOOTFILE\n'
                > <'\t\t\t\tnext\n'> <'\t\t\t}\n'> <'\t/^$/\t{ next }\n'> <'\t/^#/\t{ next }\n'> <'\t\t{\n'> 
                <'\t\t\tif ( PART == 0 && FIELD < 2 )\n'> <'\t\t  \t{\n'> <'\t\t\t\tif ( FIELD == 0 ) BOOTPATH=$1\n'> <'\t\t\t\tif ( FIELD == 1 ) BOOTFILE=$1\n'> 
                <'\t\t\t\tFIELD++\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t{\n'> <'\t\t\tif ( PART == 1 )\n'> <'\t\t\t{\n'> <'\t\t\t\tHOST=$1\n'> 
                <'\t\t\t\tHA=$3\n'> <'\t\t\t\tIP=$4\n'> <'\t\t\t\tBF=$5\n'> 
                <
'\t\t\t\tprintf "%s:\\\\\\n\\t:tc=.default:\\\\\\n\\t:ha=0x%s:\\\\\\n\\t:ip=%s:\\\\\\n\\t:bf=%s:\\n", HOST, HA, IP, BF\n'
                > <'\t\t\t}\n'> <'\t\t}'>
              )
            }
          ]
          redirects: [
            (Redir
              op: <Id.Redir_DGreat '>>'>
              loc: (redir_loc.Fd fd:1)
              arg: {($ Id.VSub_DollarName NEWTAB)}
            )
          ]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)