(command.Pipeline children: [ (command.Simple blame_tok: <tail> more_env: [] words: [{<tail>} {<-10000>} {<-F>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName line)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_EscapedChar '\\>'> pattern: (pat.Words words: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\>'> ch:'>') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\>'> ch: '>' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\>'> ch:'>') <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'endl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'endl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'endl='> name:endl) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_EscapedChar '\\*'> pattern: (pat.Words words: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'> ch:'*') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\*'> ch: '*' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'> ch:'*') <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'endl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'endl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'endl='> name:endl) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_EscapedChar '\\='> pattern: (pat.Words words: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\='> ch:'=') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\='> ch: '=' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\='> ch:'=') <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'endl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'endl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'endl='> name:endl) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <r>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%s%*s'> (${ Id.VSub_Name endl))} {(DQ (${ Id.VSub_Name line))} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Minus left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COLUMNS> var_name: COLUMNS suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<80>} ) right: <Id.Right_DollarBrace '}'> ) } right: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name line> var_name: line prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } ) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } {(DQ <' '>)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] )