array=(a b c) ls ^~~~~~ '':1: Environment bindings can't contain array literals ..(command.CommandList children: [ (command.ShAssignment left: ')) tval: ls ) more_env: [] words: [ (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 0 length: 2 span_id: 0 line: (SourceLine line_num:1 content:'ls foo' src:(source.MainFile path:'')) tval: ls ) ] ) (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 3 length: 3 span_id: 2 line: (SourceLine line_num:1 content:'ls foo' src:(source.MainFile path:'')) tval: foo ) ] ) ] redirects: [] do_fork: T ) (command.ShFunction name_tok: (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'.') ) tval: fun ) name: fun body: (BraceGroup left: (Token id: Id.Lit_LBrace col: 6 length: 1 span_id: 4 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: '{' ) children: [ (command.Sentence child: (command.Simple blame_tok: (Token id: Id.Lit_Chars col: 8 length: 4 span_id: 6 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: echo ) more_env: [] words: [ (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 8 length: 4 span_id: 6 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: echo ) ] ) (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 13 length: 2 span_id: 8 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: hi ) ] ) ] redirects: [] do_fork: T ) terminator: (Token id: Id.Op_Semi col: 15 length: 1 span_id: 9 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: _ ) ) ] redirects: [] right: (Token id: Id.Lit_RBrace col: 17 length: 1 span_id: 11 line: (SourceLine line_num: 1 content: 'fun() { echo hi; }' src: (source.MainFile path:'') ) tval: '}' ) ) ) (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {<12>}] redirects: [] do_fork: T ) right: ) (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {<34>}] redirects: [] do_fork: T ) right: ) } ] redirects: [] do_fork: T )(command.Simple blame_tok: more_env: [] words: [ {} { (DQ (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {<12>}] redirects: [] do_fork: T ) right: ) .... (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {<34>}] redirects: [] do_fork: T ) right: ) ) } ] redirects: [] do_fork: T )(command.CommandList children: [ (command.DBracket left: expr: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '#')} right:{<1>}) right: redirects: [] ) ] )(command.CommandList children: [ (command.DBracket left: expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '#')} right:{<1>}) right: (bool_expr.WordTest w:{}) ) right: redirects: [] ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.DBracket left: expr: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_Pound '#')} right: {<1>} ) right: redirects: [] ) ] ) then_kw: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] spids: [0 12] ) ] else_action: [] fi_kw: redirects: [] ) ] )(command.CommandList children: [ (command.DBracket left: expr: (bool_expr.Binary op_id:Id.BoolBinary_EqualTilde left:{} right:{}) right: redirects: [] ) ] )(command.CommandList children: [ (command.DBracket left: expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {} right: { } ) right: redirects: [] ) ] )(command.CommandList children: [ (command.DParen left: child: (arith_expr.Binary op_id:Id.Arith_Plus left:{} right:{}) right: redirects: [] ) ] )(command.CommandList children: [ (command.ForEach keyword: iter_names: [i] iterable: (for_iter.Words words:[{<1>} {<2>} {<3>}]) semi_tok: body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach keyword: iter_names: [i] iterable: (for_iter.Words words:[]) semi_tok: body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList .. children: [ (command.ForEach keyword: iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) terminator: ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach keyword: iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr keyword: init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {} ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr keyword: init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {} ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr keyword: body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.ShFunction name_tok: name: foo body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction name_tok: name: foo body: (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction name_tok: name: foo body: (command.ForEach keyword: iter_names: [i] iterable: (for_iter.Words words:[{}]) semi_tok: body: (command.DoGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) terminator: ) ] right: ) redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction keyword: name_tok: name: foo body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction keyword: name_tok: name: foo body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction keyword: name_tok: name: foo body: (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction keyword: name_tok: name: foo body: (command.ForEach keyword: iter_names: [i] iterable: (for_iter.Words words:[{}]) semi_tok: body: (command.DoGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) terminator: ) ] right: ) redirects: [] ) ) ] )(command.CommandList children.: [ (command.ShFunction keyword: name_tok: name: foo body: (command.ForEach keyword: iter_names: [i] iterable: (for_iter.Words words:[{}]) semi_tok: body: (command.DoGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) terminator: ) ] right: ) redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction name_tok: name: foo body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [ (Redir op:&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) (Redir op:'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>}) ] right: ) ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) then_kw: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] spids: [0 5] ) ] else_action: [] fi_kw: redirects: [] ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) right: redirects: [] ) terminator: ) ] ) then_kw: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] spids: [.. ls foo| ^ '':1: Unexpected EOF while parsing command ....0 7] ) ] else_action: [] fi_kw: redirects: [] ) ] )(command.CommandList children: [(command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T)] )(command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T)(command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{} {<-l>}] redirects:[] do_fork:T) ] ops: [] )(command.Pipeline negated: children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] ops: [] )(command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{} {<-l>}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [ ] )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [ ] ) ] )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [ ] ) ] )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [ ] ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} {(word_part.TildeSub token:)} {(word_part.TildeSub token: user_name:root)} {(word_part.TildeSub token:) <'/src'>} {(word_part.TildeSub token:) <'/src/foo'>} {(word_part.TildeSub token: user_name:root) <'/src'>} { <'name/blah'> } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.ControlFlow keyword:) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil . keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.ControlFlow keyword:) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.ControlFlow keyword:) ] right: ) redirects: [] ) ] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat__Else) middle: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] right: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat.YshExprs exprs: [(expr.Const c:) (expr.Const c:)] ) middle: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] right: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{} {} {(SQ )}]) middle: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] right: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start.: arms: [ (CaseArm left: pattern: (pat.Eggex eggex: (re.Repeat child:(PerlClass name:d) op:(re_repeat.Op op:)) ) middle: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] right: ) (CaseArm left: pattern: (pat.Eggex eggex: (re.Repeat child:(PerlClass name:d) op:(re_repeat.Op op:)) ) middle: action: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] right: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [(command.Expr keyword: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat.Eggex eggex:(SQ )) middle: action: [(command.Expr keyword: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat.YshExprs exprs:[(SQ )]) middle: action: [(command.Expr keyword: ) ] arms_end: redirects: [] )(command.Case case_kw: to_match: (case_arg.YshExpr e:(expr.Var name:)) arms_start: arms: [ (CaseArm left: pattern: (pat__Else) middle: action: [(command.Expr keyword: ) ] arms_end: redirects: [] )(command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [(Redir op:'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T )(command.Pipeline children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) (command.Simple blame_tok: more_env:[] words:[{} {<-l>}] redirects:[] do_fork:T) ] ops: [] )(command.AndOr children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<-l>}] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [] )(command.CommandList children: [ (command.Sentence child: (command.AndOr .. (( 1 + )) ^ '':1: Token can't be used in prefix position . A= (1 2) ^ '':1: Expected ( after = . [[ foo bar ]] ^~~ '':1: Expected ]] [[ foo -eq ]] ^ '':1: Expected ]] [[ foo$(echo <) -eq foo ]] ^ '':1: Invalid token after redirect operator . ls < ^ '':1: Invalid token after redirect operator ls < < ^ '':1: Invalid token after redirect operator echo foo$(ls <)bar ^ '':1: Invalid token after redirect operator BAD_ENV=(1 2 3) ls ^~~~~~~~ '':1: Environment bindings can't contain array literals for ((i=1; i<)); do echo $i; done ^ '':1: Token can't be used in prefix position for ((i=1; i<5; ++i)) OOPS echo $i; ERR ^~~~ '':1: Invalid word after for expression for ((i=1; i<5; ++i)); OOPS echo $i; ERR ^~~~ '':1: Expected word type Id.KW_Do, got Id.Word_Compound for $bad in 1 2; do echo hi; done ^~~~ '':1: Expected loop variable (a constant word) for foo BAD ^ '':1: Expected loop variable (a constant word) if foo; then echo hi; z ^ '':1: Expected word type Id.KW_Fi, got Id.Eof_Real foo$(invalid) () { echo hi; } ^~~ '':1: Invalid function name . foo="" echo "bar ^ '':1: Unexpected EOF reading double-quoted string that began here .. for x in 1 2 $( ^ '':1: Invalid word in for loop . for [ i = 1; i < 10; i++ ] ^ '':1: Invalid loop variable name '[' for = in a ^ '':1: Invalid loop variable name '=' . for x in 1 2 $(cat <':1: Couldn't find terminator for here doc that starts here . foo"bar" () { ^~~ '':1: Invalid function name . children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<-l>}] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) ] ops: [] ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {<'/'>}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<-l>}] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) ] ops: [] ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {<'/'>}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<-l>}] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] ops: [] ) terminator: ) (command.AndOr children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<-c>}] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] ops: [] ) ] )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [ <'1 '> (CommandSub left_token: child: (command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [{} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{} {<3>}] redirects: [] do_fork: T ) ] ) right: ) <' 4\n'> ] ) ) ] do_fork: T )(command.AndOr children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] ops: [] )(command.AndOr children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] ops: [] )(command.AndOr children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ) ] do_fork: T ) ] ops: [] )(command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env:[] words:[{}] redirects:[] do_fork:T) ] ops: [] )(command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env:[] words:[{}] re.....directs:[] do_fork:T) ] ops: [] )(command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'one tab then foo: '> ($ Id.VSub_DollarName foo) <'\n'>] ) ) ] do_fork: T )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(DQ )} here_end_tok: stdin_parts: [<'$v\n'> <'"two\n'>] ) ) ] do_fork: T )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ )} here_end_tok: stdin_parts: [<'single-quoted: $var\n'>] ) ) ] do_fork: T )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: { (word_part.EscapedLiteral token: ch:F)} here_end_tok: stdin_parts: [<'single-quoted: $var\n'>] ) ) ] do_fork: T )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ) ] .... do_fork: T ) ] ops: [] ) ] )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [($ Id.VSub_DollarName v) <'\n'> <'two\n'>] ) ) ] do_fork: T )(command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: (arith_expr.Binary op_id: Id.Arith_Star left: {} right: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) right: ) } ] redirects: [] do_fork: T ) right: ) } ] redirects: [] do_fork: T )(command.CommandList children: [ (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: (arith_expr.Binary op_id: Id.Arith_Star left: {} right: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) right: ) } ] redirects: [] do_fork: T ) right: redirects: [] ) ] )(command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) right: ) } ] redirects: [] do_fork: T ) right: ) } ] redirects: [] do_fork: T )(command.CommandList children: [ (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) right: ) } ] redirects: [] do_fork: T ) right: redirects: [] ) ] )(command.CommandList chi..ldren: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.ShAssignment left: more_env: [] words: [ { (CommandSub left_token: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Subshell left: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: redirects: [] ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: .. (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.CommandList children: [ (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) ] ) right: ) } ] redirects: [] do_fork: T ) ] )(command.Simple blame_tok: more_env: [] words: [ {} { (DQ <'double '> (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: ) <' quoted'> ) } {} ] redirects: [] do_fork: T )(command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) (command.Sentence child: .. (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words: [ { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: ) } ] ) middle: action: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) right: ) } ] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: ) } ] redirects: [] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Subshell left: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [] arms_end: redirects: [] ) right: redirects: [] ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ { (CommandSub left_token: child: (command.ForExpr keyword: init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {} ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Subshell left: child: (command.ForExpr keyword: init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {} ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) redirects: [] ) right: redirects: [] ) ] )(command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike a) right: (arith_expr.Binary op_id: Id.Arith_Star left: {} right: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) ) right: ($ Id.Lit_ArithVarLike x) ) right: ) } ] redirects: [] do_fork: T )(command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [ { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: ) } ] redirects: [] do_fork: T ) right: ) } {} ] redirects: [] do_fork: T )(BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {<'/'>}] redirects: [] do_fork: T ) terminator: ) (command.Sentence child: (command.Sim..ple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: )(command.CommandList children: [ (command.Sentence child: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {<'/'>}] redirects: [] do_fork: T ) terminator: ) (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Sentence child: (command.Subshell left: child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {<'/'>}] redirects: [] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{} {} {<1>}] redirects: [] do_fork: T ) ] ) right: redirects: [] ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{} {} {<2>}] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name_tok: name: fun body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) ] ) right: ) } ] . redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Subshell left: child: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name_tok: name: fun body: (BraceGroup left: children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) ] redirects: [] right: ) ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) ] ) right: redirects: [] ) ] )(command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) terminator: ) (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.CommandList children: [ (command.Sentence child: (command.Subshell left: child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{} {<'/'>}] redirects: [] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] ) right: redirects: [] ) terminator: ) (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] ) right: ) } ] redirects: [] do_fork: T ) terminator: ) (command.Simple blame_tok: more_env:[] words:[{} {}] r....... errcmd=( "${SETUP_STATE[$err.cmd]}" ) ^ '':1: Unexpected token while parsing arithmetic: '.' edirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ { (CommandSub left_token: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Subshell left: child: (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) right: redirects: [] ) ] )(command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: ) } {} ] redirects: [] do_fork: T )(command.CommandList children: [ (command.Sentence child: (command.DBracket left: expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (BracedVarSub left: token: var_name: marks bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name tag_marker) (${ Id.VSub_Name cons_ptr) } ) right: ) ) } ) right: redirects: [] ) terminator: ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (word_part.ArithSub left: anode: { ($ Id.VSub_DollarName foo)} right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.ShAssignment left: token: var_name: SETUP_STATE bracket_op: (bracket_op.ArrayIndex expr: {(DQ ($ Id.VSub_DollarName err) <.cmd>)} ) right: ) ) } ] right: ) } ) ] redirects: [] ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command__NoOp) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} { (CommandSub left_token: child: (command__NoOp) right: ) } ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ {} {} { (CommandSub left_token: child: (command__NoOp) right: ) } {} ] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.ShAssignment left: child: (command__NoOp) right: ) (DQ ) } ) ] redirects: [] ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) then_kw: action: [ (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: redirects: [] ) ] spids: [0 5] ) ] else_action: [] fi_kw: redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) body: (command.DoGroup left: children: [ (BraceGroup left: children: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) (command.ControlFlow keyword:) ] redirects: [] right: ) ] right: ) redirects: [] ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) then_kw: action: [ (command.Subshell left: child: (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) right: redirects: [] ) ] spids: [0 5] ) ] else_action: [] fi_kw: redirects: [] ) ] )(command.CommandList children: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) then_kw: action: [ (command.If if_kw: arms: [ (IfArm keyword: cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: more_env: [] words: [{}] redirects: [] do_fork: T ) terminator: ) ] ) then_kw: action: [ (command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [] do_fork: T ) ] spids: [8 13] ) ] else_action: [] fi_kw: redirects: [] ) ] spids: [0 5] ...) ] else_action: [] fi_kw: redirects: [] ) (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Subshell left: child: (command.AndOr children: [ (command.Simple blame_tok: more_env: [] words: [{} {(DQ ($ Id.VSub_DollarName PACKDIR))}] redirects: [] do_fork: T ) (command.ForEach keyword: iter_names: [e] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName existing)}]) body: (command.DoGroup left: children: [ (command.Case case_kw: to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName fullbases) <' '>)}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words: [ { (DQ <' '> ($ Id.VSub_DollarName e) <' '>) } ] ) middle: action: [] right: ) (CaseArm left: pattern: (pat.Words words:[{}]) middle: action: [ (command.Simple blame_tok: more_env: [] words: [ {} {<-f>} {(DQ ($ Id.VSub_DollarName e) <.pack>)} {(DQ ($ Id.VSub_DollarName e) <.idx>)} {(DQ ($ Id.VSub_DollarName e) <.keep>)} ] redirects: [] do_fork: T ) ] right: ) ] arms_end: redirects: [] ) ] right: ) redirects: [] ) ] ops: [] ) right: redirects: [] ) ] )(command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/diff-lib.sh'>}] redirects: [] do_fork: T ) terminator: ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [{} { }] redirects: [] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) ] )(command.Case case_kw: to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName fd) <','> ($ Id.VSub_DollarName command))}) arms_start: arms: [ (CaseArm left: <3> pattern: .......... (pat.Words words: [ {<3> } {<3> } ] ) middle: action: [] right: ) ] arms_end: redirects: [] )(command.CommandList children: [ (command.Case case_kw: to_match: (case_arg.Word w:{}) arms_start: arms: [ (CaseArm left: pattern: (pat.Words words: [ { (SingleQuoted left: tokens: [] right: ) } ] ) middle: action: [ (command.ShAssignment left: ch:'\\')) (word_part.EscapedLiteral token: ch: '\'' ) } ) ] redirects: [] ) ] right: ) ] arms_end: redirects: [] ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [ { (SingleQuoted left: tokens: [ ] right: ) } ] redirects: [] do_fork: T ) ] )(command.Simple blame_tok: more_env: [] words: [{} {}] redirects: [(Redir op:|'> loc:(redir_loc.Fd fd:1) arg:{})] do_fork: T )(Redir op:&'> loc:(redir_loc.Fd fd:1) arg:{<2>})(Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin:{} stdin_parts:[]) )(Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin:{} stdin_parts:[]) )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_tok: stdin_parts: [<'hi\n'>] ) ) (Redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) ] do_fork: T )(Redir op:'> loc:(redir_loc.Fd fd:1) arg:{})(Redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin:{} stdin_parts:[]) )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [ (Redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) (Redir op:&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) ] do_fork: T )(command.Simple blame_tok: more_env: [] words: [{}] redirects: [(Redir op: loc:(redir_loc.Fd fd:0) arg:{<3>})] do_fork: T )(command.CommandList children: [ (command.ShAssignment left: '> more_env: [] words: [] redirects: [(Redir op:'> loc:(redir_loc.Fd fd:1) arg:{})] do_fork: F ) ] )(command.Simple blame_tok: more_env: [] words: [{} {(DQ ) } {(DQ ) (DQ )} {}] redirects: [] do_fork: T )(command.CommandList children: [ (command.Simple blame_tok: more_env: [(EnvPair left:'> loc:(redir_loc.Fd fd:1) arg:{})] do_fork: T ) ] )(command.CommandList children: [ (command.Simple blame_tok: more_env: [] words: [{} {<1>} {<2>} {<3>}] redirects: [(Redir op:'> loc:(redir_loc.Fd fd:1) arg:{})] do_fork: T ) ] )(command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T)(command.Simple blame_tok: more_env: [(EnvPair left:'> loc:(redir_loc.Fd fd:1) arg:{})] do_fork: T )(command.Simple blame_tok: more_env: [ (EnvPair left:'> loc:(redir_loc.Fd fd:1) arg:{}) (Redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) ] do_fork: T )