(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:width) op:Equal rhs:{(72)} spids:[10])] spids: [10] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Cannot read file ') ($ VSub_Number '$1'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (Sentence child: (SimpleCommand words: [{(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' filename'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 30] ) ] spids: [16777215 60] ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(input)})] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name input> prefix_op: VSub_Pound spids: [76 79] ) } {(-gt)} {($ VSub_Name '$width')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [(C {(echo)} {(DQ ($ VSub_Name '$input'))}) (C {(fmt)})] negated: F ) ] spids: [16777215 89] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$input'))})] spids: [104 114] ) ] spids: [69 116] ) redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] )