array=(a b c) ls ^~~~~~ '':1: Environment bindings can't contain array literals ...(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:')) tval: ls ) ] ) (compound_word 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: [] more_env: [] do_fork: T spids: [] ) (command.ShFunction 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.Sent...ence child: (command.Simple words: [ (compound_word 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 ) ] ) (compound_word 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: [] more_env: [] do_fork: T spids: [] ) 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: _ ) spids: [] ) ] 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: '}' ) ) spids: [0 0 3] ) (C {} { (command_sub left_token: child: (C {} {<12>}) right: ) (command_sub left_token: child:(C {} {<34>}) right:) } )(C {} { (DQ (command_sub left_token: child: (C {} {<12>}) right: ) (command_sub left_token: child:(C {} {<34>}) right:) ) } )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '#')} right:{<1>}) redirects: [] ) ] )(command.CommandList children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '#')} right:{<1>}) right: (bool_expr.WordTest w:{}) ) redirects: [] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_Pound '#')} right: {<1>} ) redirects: [] ) ] ) action: [(C {} {})] spids: [0 12] ) ] else_action: [] redirects: [] ) ] )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id:Id.BoolBinary_EqualTilde left:{} right:{}) redirects: [] ) ] )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {} .... right: { } ) redirects: [] ) ] )(command.CommandList children: [ (command.DParen child: (arith_expr.Binary op_id:Id.Arith_Plus left:{} right:{}) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{<1>} {<2>} {<3>}]) body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[]) body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach iter_names: [i] iterable: (for_iter.Args) body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName i)}) terminator: ) ] ) redirects: [] ) ] )(command.CommandList children: [ (command.ForEach iter_names: [i] iterable: (for_iter.Args) body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr 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 children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr 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 children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ForExpr body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName i)})]) redirects: [] ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (BraceGroup left: children: [(command.Sentence child:(C {} {}) terminator:)] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction name:foo body:(command.Subshell child:(C {} {}) redirects:[])) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{}]) body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName i)}) terminator: ) ] ) redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (BraceGroup left: children: [(command.Sentence child:(C {} {}) terminator:)] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: ... ls foo| ^ '':1: Unexpected EOF while parsing command .. (BraceGroup left: children: [(command.Sentence child:(C {} {}) terminator:)] redirects: [] right: ) ) ] )(command.CommandList children: [ (command.ShFunction name:foo body:(command.Subshell child:(C {} {}) redirects:[])) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{}]) body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName i)}) terminator: ) ] ) redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{}]) body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName i)}) terminator: ) ] ) redirects: [] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (BraceGroup left: children: [(command.Sentence child:(C {} {}) 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 arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) action: [(command.Sentence child:(C {} {}) terminator:)] spids: [0 5] ) ] else_action: [] redirects: [] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Subshell child:(C {}) redirects:[]) terminator: ) ] ) action: [(command.Sentence child:(C {} {}) terminator:)] spids: [0 7] ) ] else_action: [] redirects: [] ) ] )(command.CommandList children:[(C {})])(C {} {})(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F stderr_indices:[])(command.Pipeline children:[(C {} {}) (C {} {})] negated:T stderr_indices:[])(command.Pipeline children: [(C {} {}) (C {} {<-l>}) (C {})] negated: F stderr_indices: [] )(command.CommandList children: [ (command.Pipeline children:[(C {}) (C {}) (C {})] negated:F stderr_indices:[1]) ] )(command.CommandList children: [ (command.Pipeline children:[(C {}) (C {}) (C {})] negated:F stderr_indices:[0]) ] )(command.CommandList children: [ (command.Pipeline children: [(C {}) (C {}) (C {})] negated: F stderr_indices: [0 1] ) ] )(command.CommandList children: [ (C {} {(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'>..... (( 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 .. } ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands:[(C {})]) body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) redirects: [] ) ] )(command.Simple words: [{} {}] redirects: [(redir op:'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T )(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F stderr_indices:[])(command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {} {}) (C {} {<-l>})] negated: F stderr_indices: [] ) (C {}) ] )(command.CommandList children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {} {}) (C {} {<-l>})] negated: F stderr_indices: [] ) (C {}) ] ) terminator: ) (C {} {<'/'>}) ] )(command.CommandList children:[(C {} {})])(command.CommandList children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {} {}) (C {} {<-l>})] negated: F stderr_indices: [] ) (C {}) ] ) terminator: ) (C {} {<'/'>}) ] )(command.CommandList children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {} {}) (C {} {<-l>})] negated: F stderr_indices: [] ) (C {} {}) ] ) terminator: ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {} {}) (C {} {<-c>})] negated: F stderr_indices: [] ) (C {} {}) ] ) ] )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 17 stdin_parts: [ <'1 '> (command_sub left_token: child: (command.CommandList children:[(C {} {<2>}) (C {} {<3>})]) right: ) <' 4\n'> ] ) ) ] more_env: [] do_fork: T )(command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 10 stdi.....n_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) (C {} {}) ] )(command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 14 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) (C {} {}) ] )(command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 15 stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ) ] more_env: [] do_fork: T ) (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 19 stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ) ] more_env: [] do_fork: T ) ] )(command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 12 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) (C {}) ] negated: F stderr_indices: [] )(command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 10 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) (C {}) ] negated: F stderr_indices: [] )(command.CommandList children: [ (command.Sentence child: (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 10 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Sentence child: (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 14 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ) ] more_env: [] do_fork: T ) terminator: ) (C {} {}) ] )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 10 stdin_parts: [<'one tab then foo: '> ($ Id.VSub_DollarName foo) <'\n'>] ) ) ] more_env: [] do_fork: T )(command.Simple words: [{}] redirects: [ (redir op: loc:.... (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(DQ )} here_end_span_id: 9 stdin_parts: [<'$v\n'> <'"two\n'>] ) ) ] more_env: [] do_fork: T )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ )} here_end_span_id: 8 stdin_parts: [<'single-quoted: $var\n'>] ) ) ] more_env: [] do_fork: T )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: { (word_part.EscapedLiteral token: ch:F)} here_end_span_id: 8 stdin_parts: [<'single-quoted: $var\n'>] ) ) ] more_env: [] do_fork: T )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 15 stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ) ] more_env: [] do_fork: T ) (command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 19 stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) ] )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {} here_end_span_id: 10 stdin_parts: [($ Id.VSub_DollarName v) <'\n'> <'two\n'>] ) ) ] more_env: [] do_fork: T )(C {} { (command_sub left_token: child: (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {} right: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) ) } ) right: ) } )(command.CommandList children: [ (command.Subshell child: (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {} right: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) ) } ) redirects: [] ) ] )(C {} { (command_sub left_token: child: (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) } ) right: ) } )(command.CommandList children: [ (command.Subshell child: ..... (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {} right: {} ) ) } ) redirects: [] ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: child: (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 11 17 -1])] redirects: [] ) right: ) } ) ] )(command.CommandList children: [ (command.Subshell child: (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 11 17 -1])] redirects: [] ) redirects: [] ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [10 11 16 -1] ) ] redirects: [] ) right: ) } ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [10 11 16 -1] ) ] redirects: [] ) (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [26 27 32 -1] ) ] redirects: [] ) ] ) right: ) } ) ] )(C {} { (DQ <'double '> (command_sub left_token: child: (C {} {}) right: ) <' quoted'> ) } {} )(command.CommandList children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child: (C {} { (command_sub left_token: child: (command.Case to_match: {} arms: [ (case_arm pat_list: [ { (command_sub left_token: child: (C {} {}) right: ) } ] action: [ (C {} { (command_sub left_token: child: (C {}) right: ) } ) ] spids: [15 20 27 -1] ) ] redirects: [] ) right: ) } ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Subshell child:(command.Case to_match:{} arms:[] redirects:[]) redirects:[]) ] )(command.CommandList children: [ (C { (command_sub left_token: child: (command.ForExpr 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 children:[(C {} {})]) redirects: [] ) right: ) } ) ] )(command.CommandList children: [ (command.Subshell child: (command.ForExpr 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 children:[(C {} {})]) redirects: [] ) redirects: [] ) ] )(C {} { (word_part.ArithSub 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) ) ) } )(C {} { (command_sub left_token: child: (C { (command_sub left_token: child: (C {} {}) right: ) } ) right: ) } {} )(BraceGroup left: children: [ (command.Sentence child:(C {} {<'/'>}...) terminator:) (command.Sentence child:(C {} {}) terminator:) ] redirects: [] right: )(command.CommandList children: [ (command.Sentence child: (BraceGroup left: children: [ (command.Sentence child:(C {} {<'/'>}) terminator:) (command.Sentence child:(C {} {}) terminator:) ] redirects: [] right: ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Sentence child: (command.Subshell child: (command.CommandList children: [ (command.Sentence child:(C {} {<'/'>}) terminator:) (C {} {} {<1>}) ] ) redirects: [] ) terminator: ) (C {} {} {<2>}) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name: fun body: (BraceGroup left: children: [ (command.Sentence child: (C {} {}) terminator: ) ] redirects: [] right: ) ) terminator: ) (C {}) ] ) right: ) } ) ] )(command.CommandList children: [ (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name: fun body: (BraceGroup left: children: [ (command.Sentence child: (C {} {}) terminator: ) ] redirects: [] right: ) ) terminator: ) (C {}) ] ) redirects: [] ) ] )(command.CommandList children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child: (C {} { (command_sub left_token: child: (command.CommandList children: [ (command.Sentence child: (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {} {<'/'>}) terminator: ) (C {} {}) ] ) redirects: [] ) terminator: ) (C {} {}) ] ) right: ':1: Unexpected token while parsing arithmetic: '.' .._RParen _> ) } ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (C { (command_sub left_token: child: (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 10 16 -1])] redirects: [] ) right: ) } ) ] )(command.CommandList children: [ (command.Subshell child: (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 10 16 -1])] redirects: [] ) redirects: [] ) ] )(C {} { (command_sub left_token: child: (C {} {}) right: ) } {} )(command.CommandList children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: token: var_name: marks bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name tag_marker) (${ Id.VSub_Name cons_ptr) } ) right: ) ) } ) redirects: [] ) terminator: ) ] )(command.CommandList children: [ (C {} { (word_part.ArithSub anode: { ($ Id.VSub_DollarName foo)} ) } ) ] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: token: var_name: SETUP_STATE bracket_op: (bracket_op.ArrayIndex expr: {(DQ ($ Id.VSub_DollarName err) <.cmd>)} ) right: ) ) } ] ) } spids: [1] ) ] redirects: [] ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.NoOp) right: ) } ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: child: (command.NoOp) right: ) } ) ] )(command.CommandList children: [ (C {} {} { (command_sub left_token: child: (command.NoOp) right: ) } {} ) ] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: child: (command.NoOp) right: ) (DQ ) } spids: [0] ) ] redirects: [] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) action: [(command.Subshell child:(C {} {}) redirects:[])] spids: [0 5] ) ] else_action: [] redirects: [] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) body: (command.DoGroup children: [ (BraceGroup left: children: [(C {} {}) (command.ControlFlow token:)] redirects: [] right: ) ] ) redirects: [] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) action: [(command.Subshell child:(C {} {}) redirects:[])] spids: [0 5] ) ] else_action: [] redirects: [] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {}) terminator:)] ) action: [(C {} {})] spids: [8 13] ) ] else_action: [] redirects: [] ) ] spids: [0 5] ) ] else_action: [] redirects: [] ) (C {} {}) ] )(command.CommandList children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {} {(DQ ($ Id.VSub_DollarName PACKDIR))}) (command.ForEach iter_names: [e] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName existing)}]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName fullbases) <' '>)} arms: [ (case_arm pat_list: [ { (DQ <' '> ($ Id.VSub_DollarName e) <' '>) } ] action: [] spids: [34 41 43 -1] ) (case_arm pat_list: [{}] action: [ (C {} {<-f>} {(DQ ($ Id.VSub_DollarName e) <.pack>)} {(DQ ($ Id.VSub_DollarName e) <.idx>)} {(DQ ($ Id.VSub_DollarName e) <.keep>)} ) ] spids: [46 47 68 -1] ) ] redirects: [] ) ] ) redirects: [] ) ] ) redirects: [] ) ] )(command.CommandL............ist children: [ (command.Sentence child: (C {<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/diff-lib.sh'>}) terminator: ) ] )(command.CommandList children:[(C {} { })])(command.CommandList children:[(C {} {})])(command.CommandList children:[(C {} {})])(command.Case to_match: {(DQ ($ Id.VSub_DollarName fd) <','> ($ Id.VSub_DollarName command))} arms: [ (case_arm pat_list: [{<3> } {<3> }] action: [] spids: [11 18 25 -1] ) ] redirects: [] )(command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [ { (single_quoted left: tokens: [] right: ) } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: ch:'\\')) (word_part.EscapedLiteral token: ch: '\'' ) } spids: [13] ) ] redirects: [] ) ] spids: [7 10 20 -1] ) ] redirects: [] ) ] )(command.CommandList children: [ (C { (single_quoted left: tokens: [ ] right: ) } ) ] )(command.Simple words: [{} {}] redirects: [(redir op:|'> loc:(redir_loc.Fd fd:1) arg:{})] more_env: [] 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:{} here_end_span_id:-1 stdin_parts:[]) )(redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin:{} here_end_span_id:-1 stdin_parts:[]) )(command.Simple words: [{}] redirects: [ (redir op: loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin:{} here_end_span_id:10 stdin_parts:[<'hi\n'>]) ) (redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) ] more_env: [] 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:{} here_end_span_id:-1 stdin_parts:[]) )(command.Simple words: [{}] redirects: [ (redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) (redir op:&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) ] more_env: [] do_fork: T )(command.Simple words: [{}] redirects: [(redir op: loc:(redir_loc.Fd fd:0) arg:{<3>})] more_env: [] do_fork: T )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:'> ..... ---------------------------------------------------------------------- Ran 79 tests in 0.255s OK loc:(redir_loc.Fd fd:1) arg:{})] more_env: [] do_fork: F ) ] )(C {} {(DQ ) } {(DQ ) (DQ )} {})(command.CommandList children: [ (command.Simple words: [{}] redirects: [(redir op:'> loc:(redir_loc.Fd fd:1) arg:{})] more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[3])] do_fork: T ) ] )(command.CommandList children: [ (command.Simple words: [{} {<1>} {<2>} {<3>}] redirects: [(redir op:'> loc:(redir_loc.Fd fd:1) arg:{})] more_env: [] do_fork: T ) ] )(C {} {})(command.Simple words: [{} {}] redirects: [] more_env: [(env_pair name:FOO val:{} spids:[0])] do_fork: T )(command.Simple words: [{} {}] redirects: [(redir op:'> loc:(redir_loc.Fd fd:1) arg:{})] more_env: [(env_pair name:FOO val:{} spids:[0]) (env_pair name:SPAM val:{} spids:[6])] do_fork: T )(command.Simple words: [{} {}] redirects: [ (redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) (redir op:'> loc:(redir_loc.Fd fd:1) arg:{}) ] more_env: [(env_pair name:FOO val:{} spids:[0]) (env_pair name:SPAM val:{} spids:[6])] do_fork: T )