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 name:empty) op: assign_op.Equal rhs: {(sh_array_literal left:)} spids: [0] ) ] ) ] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:array) op: assign_op.Equal rhs: {(sh_array_literal left: words:[{} {} {}])} spids: [0] ) ] ) ] )(command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:array) op: assign_op.Equal rhs: {(sh_array_literal left: words:[{} {} {}])} spids: [0] ) ] ) terminator: ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:array2) op: assign_op.Equal rhs: {(sh_array_literal left: words:[{} {} {}])} spids: [10] ) ] ) ] )(C {} {})(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F)(command.AndOr ops:[Id.Op_DPipe] children:[(C {} {}) (C {})])(command.AndOr ops: [Id.Op_DPipe] children: [(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F) (C {})] )(command.Case to_match:{})(command.Case to_match: {} arms: [ (case_arm pat_list: [{} {} {}] action: [(C {} {})] spids: [7 12 18 -1] ) ] )(command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[6 7 13 -1])] )(command.Case to_match: {} arms: [ (case_arm pat_list:[{}] action:[(C {} {})] spids:[7 8 14 -1]) (case_arm pat_list:[{}] action:[(C {} {})] spids:[17 18 24 -1]) ] )(command.Case to_match: {} arms: [ (case_arm pat_list:[{}] action:[(C {} {})] spids:[7 8 14 -1]) (case_arm pat_list: [{}] action: [(command.Sentence child:(C {} {}) terminator:)] spids: [20 21 -1 29] ) ] )(command.Case to_match: {} arms: [ (case_arm pat_list:[{}] action:[(C {} {})] spids:[7 8 14 -1]) (case_arm pat_list:[{}] action:[(C {} {})] spids:[20 21 -1 27]) ] )(command.Simple words: [ (compound_word parts:[(Token id:Id.Lit_Chars span_id:0 val:ls)]) (compound_word parts:[(Token id:Id.Lit_Chars span_id:2 val:foo)]) ] ) (command.ShFunction name: fun body: (command.BraceGroup children: [ (command.Sentence child: (command.Simple words: [ (compound_word parts:[(Token id:Id.Lit_Chars span_id:6 val:echo)]) (compound_word parts:[(Token id:Id.Lit_Chars span_id:8 val:hi)]) ] ) terminator: (Token id:Id.Op_Semi span_id:9 val:_) ) ] spids: [4] ) spids: [0 3] ) (C {} { (command_sub left_token: command_list: (command.CommandList children:[(C {} {<12>})]) ) (command_sub left_token: command_list: (command.CommandList children:[(C {} {<34>})]) ) } )(C {} { (DQ (command_sub left_token: command_list: (command.CommandList children:[(C {} {<12>})]) ) (command_sub left_token: command_list: (command.CommandList children:[(C {} {<34>})]) ) ) } )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '$#')} right:{<.....1>}) ) ] )(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:{}) ) ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.DBracket expr: (bool_expr.Binary op_id:Id.BoolBinary_gt left:{($ Id.VSub_Pound '$#')} right:{<1>}) ) ] action: [(C {} {})] spids: [0 12] ) ] ) ] )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id:Id.BoolBinary_EqualTilde left:{} right:{}) ) ] )(command.CommandList children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {} right: { } ) ) ] )(command.CommandList children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) ] )(command.CommandList children: [ (command.ForEach iter_name: i iter_words: [{<1>} {<2>} {<3>}] do_arg_iter: F body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})]) ) ] )(command.CommandList children: [ (command.ForEach iter_name: i do_arg_iter: F body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})]) ) ] )(command.CommandList children: [ (command.ForEach iter_name: i do_arg_iter: T body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName '$i')}) terminator: ) ] ) ) ] )(command.CommandList children: [ (command.ForEach iter_name: i do_arg_iter: T body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})]) ) ] )(command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:) right: (arith_expr.ArithWord w:{}) ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})]) ) ] )(command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:) right: (arith_expr.ArithWord w:{}) ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})]) ) ] )(command.CommandList children: [ (command.ForExpr body:(command.DoGroup children:[(C {} {($ Id.VSub_DollarName '$i')})])) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.BraceGroup children: [(command.Sentence child:(C {} {}) terminator:)] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.Subshell command_list:(command.CommandList children:[(C {<... ls foo| ^ :1: Unexpected EOF while parsing command ..echo>} {})])) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_name: i iter_words: [{}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName '$i')}) terminator: ) ] ) ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.BraceGroup children: [(command.Sentence child:(C {} {}) terminator:)] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.BraceGroup children: [(command.Sentence child:(C {} {}) terminator:)] ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.Subshell command_list:(command.CommandList children:[(C {} {})])) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_name: i iter_words: [{}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName '$i')}) terminator: ) ] ) ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.ForEach iter_name: i iter_words: [{}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {} {($ Id.VSub_DollarName '$i')}) terminator: ) ] ) ) ) ] )(command.CommandList children: [ (command.ShFunction name: foo body: (command.BraceGroup children: [(command.Sentence child:(C {} {}) terminator:)] redirects: [ (redir.Redir op:&'> fd:1 arg_word:{<2>}) (redir.Redir op:'> fd:2 arg_word:{}) ] ) ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {}) terminator:)] action: [(command.Sentence child:(C {} {}) terminator:)] spids: [0 5] ) ] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Subshell command_list:(command.CommandList children:[(C {})])) terminator: ) ] action: [(command.Sentence child:(C {} {}) terminator:)] spids: [0 7] ) ] ) ] )(command.CommandList children:[(C {})])(C {} {})(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F)(command.Pipeline children:[(C {} {}) (C {} {})] negated:T)(command.Pipeline children:[(C {} {}) (C {} {<-l>}) (C {})] negated:F)(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 ..... (( 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: Loop variable name should be a constant for foo BAD ^~~ :1: Unexpected word after for loop variable 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 ..token:)} {(word_part.TildeSub token:)} {(word_part.TildeSub token:) } {(word_part.TildeSub token:) } {(word_part.TildeSub token:) } { } ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: [(command.Sentence child:(C {}) terminator:)] body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: [(command.Sentence child:(C {}) terminator:)] body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: [(C {})] body: (command.DoGroup children: [(C {} {}) (command.ControlFlow token:)] ) ) ] )(command.Simple words: [{} {}] redirects: [(redir.Redir op:'> fd:2 arg_word:{})] )(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F)(command.AndOr ops: [Id.Op_DPipe] children: [(command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F) (C {})] )(command.CommandList children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F) (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) (C {}) ] ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children:[(C {} {}) (C {} {<-l>})] negated:F) (C {} {}) ] ) terminator: ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children:[(C {} {}) (C {} {<-c>})] negated:F) (C {} {}) ] ) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 17 stdin_parts: [ <'1 '> (command_sub left_token: command_list: (command.CommandList children:[(C {} {<2>}) (C {} {<3>})]) ) <' 4\n'> ] ) ] )(command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) (C {} {}) ] )(command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 14 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) (C {} {}) ] )(command.AndOr ops: [Id.Op_DAmp] childr.......en: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 15 stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ] ) (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 19 stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ] ) ] )(command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 12 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) (C {}) ] negated: F )(command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) (C {}) ] negated: F )(command.CommandList children: [ (command.Sentence child: (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Sentence child: (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 14 stdin_parts: [<'PIPE 1\n'> <'PIPE 2\n'>] ) ] ) terminator: ) (C {} {}) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 stdin_parts: [<'one tab then foo: '> ($ Id.VSub_DollarName '$foo') <'\n'>] ) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {(DQ )} here_end_span_id: 9 stdin_parts: [<'$v\n'> <'"two\n'>] ) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {(SQ )} here_end_span_id: 8 stdin_parts: [<'single-quoted: $var\n'>] ) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: { (word_part.EscapedLiteral token:)} here_end_span_id: 8 stdin_parts: [<'single-quoted: $var\n'>] ) ] )(command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 15 stdin_parts: [<'PIPE A1\n'> <'PIPE A2\n'>] ) ] ) (command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 19 stdin_parts: [<'PIPE B1\n'> <'PIPE B2\n'>] ) ] ) ] negated: F ) ] )(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 .... stdin_parts: [($ Id.VSub_DollarName '$v') <'\n'> <'two\n'>] ) ] )(C {} { (command_sub left_token: command_list: (command.CommandList children: [ (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{}) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) ) } ) ] ) ) } )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{}) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) ) } ) ] ) ) ] )(C {} { (command_sub left_token: command_list: (command.CommandList children: [ (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) } ) ] ) ) } )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (C {} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) } ) ] ) ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:array) op: assign_op.Equal rhs: {(sh_array_literal left: words:[{} {} {}])} spids: [3] ) ] ) ] ) ) } ) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:array) op: assign_op.Equal rhs: {(sh_array_literal left: words:[{} {} {}])} spids: [1] ) ] ) ] ) ) ] )(command.CommandList children: [ (C { (command_sub ... left_token: command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [9 11 17 -1] ) ] ) ] ) ) } ) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 11 17 -1])] ) ] ) ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [10 11 16 -1] ) ] ) ] ) ) } ) ] )(command.CommandList children: [ (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [10 11 16 -1] ) ] ) (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [26 27 32 -1] ) ] ) ] ) ) } ) ] )(C {} { (DQ <'double '> (command_sub left_token: command_list: (command.CommandList children:[(C {} {})]) ) <' quoted'> ) } {} )(command.CommandList children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child: (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [ { (command_sub left_token: command_list: (command.CommandList children:[(C {} {})]) ) } ] action: [ (C {} { (command_sub left_token: command_list: (command.CommandList children:[(C {})]) ) } ) ] spids: [15 20 27 -1] ) ] ) ] ) ) } ) terminat......or: ) (C {} {}) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children:[(command.Case to_match:{})]) ) ] )(command.CommandList children: [ (C { (command_sub left_token: command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:) right: (arith_expr.ArithWord w:{}) ) update: (arith_expr.UnaryAssign op_id: Id.Arith_DPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children:[(C {} {})]) ) ] ) ) } ) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:) right: (arith_expr.ArithWord w:{}) ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children:[(C {} {})]) ) ] ) ) ] )(C {} { (word_part.ArithSub anode: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.IndexedName name: a index: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{}) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{}) right: (arith_expr.ArithWord w:{}) ) ) ) right: (arith_expr.VarRef token:) ) ) } )(C {} { (command_sub left_token: command_list: (command.CommandList children: [ (C { (command_sub left_token: command_list: (command.CommandList children:[(C {} {})]) ) } ) ] ) ) } {} )(command.BraceGroup children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child:(C {} {}) terminator:) ] )(command.CommandList children: [ (command.Sentence child: (command.BraceGroup children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child:(C {} {}) terminator:) ] ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (command.Sentence child: (command.Subshell comman....d_list: (command.CommandList children: [ (command.Sentence child:(C {} {}) terminator:) (C {} {} {<1>}) ] ) ) terminator: ) (C {} {} {<2>}) ] )(command.CommandList children: [ (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name: fun body: (command.BraceGroup children: [ (command.Sentence child: (C {} {}) terminator: ) ] ) ) terminator: ) (C {}) ] ) ) } ) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Sentence child: (command.ShFunction name: fun body: (command.BraceGroup children: [ (command.Sentence child: (C {} {}) terminator: ) ] ) ) terminator: ) (C {}) ] ) ) ] )(command.CommandList children: [ (command.Sentence child:(C {} {}) terminator:) (command.Sentence child: (C {} { (command_sub left_token: command_list: (command.CommandList children: [ (command.Sentence child: (command.Subshell command_list: (command.CommandList children: [ (command.Sentence child: (C {} {}) terminator: ) (C {} {}) ] ) ) terminator: ) (C {} {}) ] ) ) } ) terminator: ) (C {} {}) ] )(command.CommandList children: [ (C { (command_sub left_token: command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [{}] action: [(C {} {})] spids: [9 10 16 -1] ) ] ) ] ) ) } ) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Case to_match: {} arms: [(case_arm pat_list:[{}] action:[(C {} {})] spids:[9 10 16 -1])] ) ] ) ) ] )(C {} { (command_sub left_token: co.. errcmd=( "${SETUP_STATE[$err.cmd]}" ) ^ :1: Unexpected token in arithmetic context ...mmand_list: (command.CommandList children:[(C {} {})]) ) } {} )(command.CommandList children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(${ Id.VSub_Name tag_marker) (${ Id.VSub_Name cons_ptr) } ) ) ) ) } ) ) terminator: ) ] )(command.CommandList children: [ (C {} { (word_part.ArithSub anode: (arith_expr.ArithWord w: { ($ Id.VSub_DollarName '$foo')} ) ) } ) ] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:errcmd) op: assign_op.Equal rhs: { (sh_array_literal left: words: [ { (DQ (braced_var_sub token: bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ ($ Id.VSub_DollarName '$err') <.cmd>)}) ) ) ) } ] ) } spids: [1] ) ] ) ] )(command.CommandList children: [(C {} {(command_sub left_token: command_list:(command.NoOp))})] )(command.CommandList children: [(C {} {(command_sub left_token: command_list:(command.NoOp))})] )(command.CommandList children: [ (C {} {} {(command_sub left_token: command_list:(command.NoOp))} {} ) ] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOO) op: assign_op.Equal rhs: {(DQ ) (command_sub left_token: command_list:(command.NoOp)) (DQ ) } spids: [0] ) ] ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {}) terminator:)] action: [ (command.Subshell command_list: (command.CommandList children:[(C {} {})]) ) ] spids: [0 5] ) ] ) ] )(command.CommandList children: [ (command.WhileUntil keyword: cond: [(command.Sentence child:(C {}) terminator:)] body: (command.DoGroup children: [ (command.BraceGroup children: [(C {} {}) (command.ControlFlow token:)] ) ] ) ) ] )(command.CommandList children: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {}) terminator:)] action: [ (command.Subshell command_list: (command.CommandList children:[(C {} {})]) ) ] spids: [0 5] ) ] ) ] )(command.CommandList children: [ (command.If arms: [ ..... (if_arm cond: [(command.Sentence child:(C {}) terminator:)] action: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {}) terminator:)] action: [(C {} {})] spids: [8 13] ) ] ) ] spids: [0 5] ) ] ) (C {} {}) ] )(command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {} {(DQ ($ Id.VSub_DollarName '$PACKDIR'))}) (command.ForEach iter_name: e iter_words: [{($ Id.VSub_DollarName '$existing')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName '$fullbases') <' '>)} arms: [ (case_arm pat_list: [ { (DQ <' '> ($ Id.VSub_DollarName '$e') <' '>) } ] 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] ) ] ) ] ) ) ] ) ] ) ) ] )(command.CommandList children: [ (command.Sentence child: (C {<.>} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) }) 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> }] spids: [11 18 25 -1] ) ] )(command.CommandList children: [ (command.Case to_match: {} arms: [ (case_arm pat_list: [ {(single_quoted left: tokens:[])} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ret) op: assign_op.PlusEqual rhs: {(DQ (word_part.EscapedLiteral token:)) (word_part.EscapedLiteral token: ) } spids: [13] ) ] ) ] spids: [7 10 20 -1] ) ] ) ] )(command.CommandList children: [ (C { (single_quoted left: tokens: [ ] ) } ) ] )(command.Simple words: [{} {}] redirects: [(redir.Redir op:|'> fd:-1 arg_word:{.............. ---------------------------------------------------------------------- Ran 79 tests in 0.084s OK })] )(redir.Redir op:&'> fd:1 arg_word:{<2>})(redir.HereDoc op: fd:-1 here_begin:{} here_end_span_id:None)(redir.HereDoc op: fd:-1 here_begin:{} here_end_span_id:None)(command.Simple words: [{}] redirects: [ (redir.HereDoc op: fd: -1 here_begin: {} here_end_span_id: 10 stdin_parts: [<'hi\n'>] ) (redir.Redir op:'> fd:-1 arg_word:{}) ] )(redir.Redir op:'> fd:-1 arg_word:{})(redir.HereDoc op: fd:-1 here_begin:{} here_end_span_id:None)(command.Simple words: [{}] redirects: [ (redir.Redir op:'> fd:-1 arg_word:{}) (redir.Redir op:&'> fd:1 arg_word:{<2>}) ] )(command.Simple words: [{}] redirects: [(redir.Redir op: fd:-1 arg_word:{<3>})] )(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs:(sh_lhs_expr.Name name:ONE) op:assign_op.Equal rhs:{<1>} spids:[0]) (assign_pair lhs:(sh_lhs_expr.Name name:TWO) op:assign_op.Equal rhs:{<2>} spids:[3]) ] ) ] )(command.CommandList children: [ (command.Simple redirects:[(redir.Redir op:'> fd:-1 arg_word:{})]) ] )(C {} {(DQ ) } {(DQ ) (DQ )} {})(command.CommandList children: [ (command.Simple words: [{}] redirects: [(redir.Redir op:'> fd:-1 arg_word:{})] more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[3])] ) ] )(command.CommandList children: [ (command.Simple words: [{} {<1>} {<2>} {<3>}] redirects: [(redir.Redir op:'> fd:-1 arg_word:{})] ) ] )(C {} {})(command.Simple words:[{} {}] more_env:[(env_pair name:FOO val:{} spids:[0])])(command.Simple words: [{} {}] redirects: [(redir.Redir op:'> fd:-1 arg_word:{})] more_env: [(env_pair name:FOO val:{} spids:[0]) (env_pair name:SPAM val:{} spids:[6])] )(command.Simple words: [{} {}] redirects: [ (redir.Redir op:'> fd:-1 arg_word:{}) (redir.Redir op:'> fd:-1 arg_word:{}) ] more_env: [(env_pair name:FOO val:{} spids:[0]) (env_pair name:SPAM val:{} spids:[6])] )