(command.CommandList children: [ (command.ShFunction name: err_exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<print>} {<-u2>} {<-n>} {(DQ <Id.Lit_BadBackslash '\\'> <t>)}) (C {<print>} {<-u2>} {<-r>} {(${ Id.VSub_Name Command) <Id.Lit_LBracket '['> ($ Id.VSub_Number 1) <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> } { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_At '@'> var_name: '@' suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) right: <Id.Arith_RBrace _> ) ) } ) (C {<let>} {<Id.Lit_VarLike 'Errors+='> <1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<alias>} {<Id.Lit_VarLike 'err_exit='> (SQ <'err_exit $LINENO'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Command='> name:Command) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 0> var_name: 0 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [114] ) ] redirects: [] ) (C {<integer>} {<Id.Lit_VarLike 'Errors='> <0>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<-dt>}) right: <Id.Eof_RParen _> ) } spids: [128] ) ] redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<err_exit>} {<mktemp>} {<-dt>} {<failed>}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (C {<trap>} {(DQ <'cd /; rm -rf '> ($ Id.VSub_DollarName tmp))} {<EXIT>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<readonly>} spids: [165] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u='> name:u) op: assign_op.Equal rhs: {<Uppercase>} spids: [168] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'l='> name:l) op: assign_op.Equal rhs: {<Lowercase>} spids: [171] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<22>} spids: [174] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i8='> name:i8) op: assign_op.Equal rhs: {<10>} spids: [177] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L) op: assign_op.Equal rhs: {<abc>} spids: [180] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L5='> name:L5) op: assign_op.Equal rhs: {<def>} spids: [183] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uL5='> name:uL5) op: assign_op.Equal rhs: {<abcdef>} spids: [186] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'xi='> name:xi) op: assign_op.Equal rhs: {<20>} spids: [189] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {<export>} spids: [192] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {<tagged>} spids: [195] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'H='> name:H) op: assign_op.Equal rhs: {<hostname>} spids: [198] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LZ5='> name:LZ5) op: assign_op.Equal rhs: {<026>} spids: [201] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RZ5='> name:RZ5) op: assign_op.Equal rhs: {<026>} spids: [204] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Z5='> name:Z5) op: assign_op.Equal rhs: {<123>} spids: [207] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lR5='> name:lR5) op: assign_op.Equal rhs: {<ABcdef>} spids: [210] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'R5='> name:R5) op: assign_op.Equal rhs: {<def>} spids: [213] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: {<l>} spids: [216] ) ] redirects: [] ) (command.ForEach iter_names: [option] iterable: (for_iter.Words words: [ {<u>} {<l>} {<i>} {<i8>} {<L>} {<L5>} {<LZ5>} {<RZ5>} {<Z5>} {<r>} {<x>} {<H>} {<t>} {<R5>} {<uL5>} {<lR5>} {<xi>} {<n>} ] ) body: (command.DoGroup children: [ (C {<typeset>} {<-> ($ Id.VSub_DollarName option)} {($ Id.VSub_DollarName option)}) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Subshell child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<newval>} spids: [273] ) ] redirects: [] ) redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] ) (C {<err_exit>} {<readonly>} {<attribute>} {<fails>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<i> <Id.Lit_Other '+'> <5>} spids: [291] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 27>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<integer>} {<attributes>} {<fails>})] spids: [296 307] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName i8)} right: {<8> <Id.Lit_Pound '#'> <12>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<integer>} {<base>} {<8>} {<fails>})] spids: [319 333] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName u)} right: {<UPPERCASE>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<uppercase>} {<fails>})] spids: [347 359] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName l)} right: {<lowercase>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<lowercase>} {<fails>})] spids: [369 381] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName n)} right: {<lowercase>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<reference>} {<variables>} {<fail>})] spids: [391 403] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {<t> <Id.BoolBinary_GlobEqual '='> <tagged>} right: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-t>}) right: <Id.Eof_RParen _> ) } ) redirects: [] ) ] ) action: [(C {<err_exit>} {<tagged>} {<fails>})] spids: [415 433] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {<t>} right: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <t>}) right: <Id.Eof_RParen _> ) } ) redirects: [] ) ] ) action: [(C {<err_exit>} {<tagged>} {<fails>})] spids: [443 460] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName Z5)} right: {<00123>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<zerofill>} {<fails>})] spids: [470 482] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName RZ5)} right: {<00026>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<right>} {<zerofill>} {<fails>})] spids: [492 504] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L) op: assign_op.Equal rhs: {<12345>} spids: [516] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName L)} right: {<123>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<leftjust>} {<fails>})] spids: [519 531] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName L5)} right: {(DQ <'def '>)} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<leftjust>} {<fails>})] spids: [541 555] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName uL5)} right: {<ABCDE>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<leftjust>} {<uppercase>} {<fails>})] spids: [565 577] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName lR5)} right: {<bcdef>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<rightjust>} {<fails>})] spids: [589 601] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName R5)} right: {(DQ <' def'>)} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<rightjust>} {<fails>})] spids: [611 625] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'echo $x'>)}) right: <Id.Eof_RParen _> ) } right: {<export>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<export>} {<fails>})] spids: [635 655] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'xi=xi+4;echo $xi'>)}) right: <Id.Eof_RParen _> ) } right: {<24>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {<export>} {<attributes>} {<fails>})] spids: [665 685] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{($ Id.VSub_DollarName SHELL)}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_span_id: 714 stdin_parts: [ <'\tfoo=bar\n'> <'\t'> ($ Id.VSub_DollarName SHELL) <' -c \'print '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'foo\'\n'> ] ) ) ] more_env: [(env_pair name:foo val:{<abc>} spids:[699])] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [697] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName x)} right: {<bar>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'environment variables require re-export'>)})] spids: [717 729] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (C {<typeset>} {<Id.Lit_Other '+'>}) redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] ) (C {<err_exit>} {(SQ <'typeset + not working'>)}) ] ) (command.Subshell child: (command.Simple words: [{<typeset>} {<-L-5>} {<Id.Lit_VarLike 'buf='> (DQ <A>)}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_QMark '?')} right: {<0>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'typeset allows negative field for left/right adjust'>)})] spids: [775 787] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {<b>} spids: [797] ) ] redirects: [] ) (C {<readonly>} {($ Id.VSub_DollarName a) <Id.Lit_Equals '='> <foo>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName b)} right: {<foo>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'readonly $a=b not working'>)})] spids: [806 818] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<export>}) (C {<grep>} {(SQ <'^PATH='>)})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<PATH> <Id.BoolBinary_GlobEqual '='> <Id.Lit_Other '*'>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'export not working'>)})] spids: [828 852] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'picture='> name:picture) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {<Id.Lit_VarLike 'bitmap='> <'/fruit'>} {<Id.Lit_VarLike 'size='> (sh_array_literal left: <Id.Op_LParen _> words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'x='> <2.5>}] ) } ] ) } spids: [862] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<print>} {($ Id.VSub_DollarName picture)}) right: <Id.Eof_RParen _> ) ) } spids: [882] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ (${ Id.VSub_Name string))} right: {<Id.Lit_Other '*'> (SQ <'size=( typeset -E'>) <Id.Lit_Other '*'>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'print of compound exponential variable not working'>)})] spids: [891 911] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz='> name:sz) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'y='> <2.2>}] ) } spids: [921] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<print>} {($ Id.VSub_DollarName sz)}) right: <Id.Eof_RParen _> ) ) } spids: [931] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name sz))} right: {<Id.Lit_Other '*'> (SQ <'typeset -E -F'>) <Id.Lit_Other '*'>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'print of exponential shows both -E and -F attributes'>)})] spids: [940 960] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<print>} {(SQ <'typeset -i m=48/4+1;print -- $m'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <'/script'>} ) ] more_env: [] do_fork: T ) (C {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName tmp) <'/script'>}) (C {<typeset>} {<-Z2>} {<m>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName tmp) <'/script'>}) right: <Id.Eof_RParen _> ) } right: {<13>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'attributes not cleared for script execution'>)})] spids: [995 1010] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<print>} {(SQ <'print VAR=$VAR'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <'/script'>} ) ] more_env: [] do_fork: T ) (C {<typeset>} {<-L70>} {<Id.Lit_VarLike 'VAR='> <Id.KW_Var var>}) (command.Simple words: [{($ Id.VSub_DollarName tmp) <'/script'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <'/script.1'>} ) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName tmp) <'/script.1'>} ) ] more_env: [] do_fork: F ) right: <Id.Eof_RParen _> ) } right: {<VAR> <Id.BoolBinary_GlobEqual '='>} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -L should not be inherited'>)}) ] ) (C {<typeset>} {<-Z>} {<Id.Lit_VarLike 'LAST='> <00>}) (C {<unset>} {<-f>} {<foo>}) (command.ShFunction name: foo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)}) redirects: [] ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1101] ) ] redirects: [] ) ] spids: [1090 1099] ) ] else_action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike LAST) ) redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<foo>} {<1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LAST> var_name: LAST prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 2>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'LAST!=2'>)})] spids: [1122 1138] ) ] else_action: [] redirects: [] ) (C {<foo>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LAST> var_name: LAST prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 2>} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'LAST!=2'>)})] spids: [1150 1166] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<set>}) (C {<grep>} {<LAST>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<LAST> <Id.BoolBinary_GlobEqual '='> <02>} ) redirects: [] ) (C {<err_exit>} {(DQ <'LAST not correct in set list'>)}) ] ) (C {<set>} {<-a>}) (C {<unset>} {<foo>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo) op: assign_op.Equal rhs: {<bar>} spids: [1212] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<export>}) (C {<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {(SQ <'foo=bar'>)} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'all export not working'>)})] spids: [1215 1238] ) ] else_action: [] redirects: [] ) (C {<unset>} {<foo>}) (command.Simple words: [{<read>} {<foo>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_span_id: 1261 stdin_parts: [<'bar\n'>] ) ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<export>}) (C {<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {(SQ <'foo=bar'>)} ) redirects: [] ) ] ) action: [(C {<err_exit>} {(SQ <'all export not working with read'>)})] spids: [1262 1285] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<typeset>}) (C {<grep>} {<PS2>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<PS2>} ) redirects: [] ) ] ) action: [ (C {<err_exit>} {(SQ <'typeset without arguments outputs names without attributes'>)}) ] spids: [1295 1315] ) ] else_action: [] redirects: [] ) (C {<unset>} {<a>} {<z>} {<q>} {<x>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w1='> name:w1) op: assign_op.Equal rhs: {<hello>} spids: [1335] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w2='> name:w2) op: assign_op.Equal rhs: {<world>} spids: [1338] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't1='> name:t1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName w1) <' '> ($ Id.VSub_DollarName w2))} spids: [1341] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {(SQ <a>)} right: {<Id.Lit_Digits 97>} ) redirects: [] ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1) op: assign_op.Equal rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGQ='>} spids: [1365] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2) op: assign_op.Equal rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGRoZWxsbyB3b3JsZA='> <Id.Lit_Equals '='>} spids: [1369] ) ] redirects: [] ) ] spids: [1348 1363] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1) op: assign_op.Equal rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4Q='>} spids: [1375] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2) op: assign_op.Equal rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4SIhZOTlkCmlpmThA='> <Id.Lit_Equals '='>} spids: [1379] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z) op: assign_op.Equal rhs: {($ Id.VSub_DollarName b1)} spids: [1385] ) ] redirects: [] ) (C {<typeset>} {<-b>} {<Id.Lit_VarLike 'x='> ($ Id.VSub_DollarName b1)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName x)} right: {(DQ ($ Id.VSub_DollarName z))} ) redirects: [] ) (C {<print>} {<-u2>} {(SQ <'binary variable not expanding correctly'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <'%B'>)} {<x>}) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName t1)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b not working'>)}) ] ) (C {<typeset>} {<-b>} {<-Z5>} {<Id.Lit_VarLike 'a='> ($ Id.VSub_DollarName b1)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <'%B'>)} {<a>}) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName w1)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b -Z5 not working'>)}) ] ) (C {<typeset>} {<-b>} {<Id.Lit_VarLike 'q='> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName x)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName q)} right: {($ Id.VSub_DollarName b2)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b not working with concatination'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <'%B'>)} {<q>}) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b concatination not working'>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x+='> name:x) op: assign_op.PlusEqual rhs: {($ Id.VSub_DollarName b1)} spids: [1531] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName x)} right: {($ Id.VSub_DollarName b2)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b not working with append'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <'%B'>)} {<x>}) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b append not working'>)}) ] ) (C {<typeset>} {<-b>} {<-Z20>} {<Id.Lit_VarLike 'z='> ($ Id.VSub_DollarName b1)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<printf>} {(DQ <'%B'>)} {<z>}) (C {<wc>} {<-c>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 20>} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -b -Z20 not storing 20 bytes'>)}) ] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<typeset>} {<-b>} {<v1>} {<v2>}) (C {<read>} {<-N11>} {<v1>}) (C {<read>} {<-N22>} {<v2>}) ] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_span_id: 1654 stdin_parts: [<'hello worldhello worldhello world\n'>] ) ) ] right: <Id.Lit_RBrace '}'> ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName v1)} right: {(DQ ($ Id.VSub_DollarName b1))} ) redirects: [] ) (C {<err_exit>} {(DQ <'v1='> ($ Id.VSub_DollarName v1) <' should be '> ($ Id.VSub_DollarName b1))} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName v2)} right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'v1='> ($ Id.VSub_DollarName v2) <' should be '> ($ Id.VSub_DollarName x))} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Simple words: [{<env>} {(SQ <'!=1'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<env>} {(SQ <'!=1'>)} {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'echo ok'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } right: {<ok>} ) redirects: [] ) (C {<err_exit>} {(SQ <'malformed environment terminates shell'>)}) ] ) ] spids: [1701 1715] ) ] else_action: [] redirects: [] ) (C {<unset>} {<Id.KW_Var var>}) (C {<typeset>} {<-b>} {<Id.KW_Var var>}) (command.Pipeline children: [(C {<printf>} {(SQ <'12%Z34'>)}) (C {<read>} {<-r>} {<-N>} {<5>} {<Id.KW_Var var>})] negated: F stderr_indices: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName var)} right: {<MTIAMzQ> <Id.BoolBinary_GlobEqual '='>} ) redirects: [] ) (C {<err_exit>} {(SQ <'binary files with zeros not working'>)}) ] ) (C {<unset>} {<Id.KW_Var var>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Simple words: [{<command>} {<typeset>} {<-usi>} {<Id.Lit_VarLike 'var='> <0xfffff>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName var)} right: {<Id.Lit_Digits 0> <Id.Lit_ArithVarLike xffff>} ) redirects: [] ) (C {<err_exit>} {(SQ <'unsigned short integers not working'>)}) ] ) ] spids: [1805 1820] ) ] else_action: [(C {<err_exit>} {(SQ <'typeset -usi cannot be used for unsigned short'>)})] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'unset foo;typeset -Z2 foo; print ${foo:-3}'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } right: {<3>} ) redirects: [] ) (C {<err_exit>} {(SQ <'${foo:-3} not 3 when typeset -Z2 field undefined'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'unset foo;typeset -Z2 foo; print ${foo:=3}'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } right: {<03>} ) redirects: [] ) (C {<err_exit>} {(SQ <'${foo:=-3} not 3 when typeset -Z2 foo undefined'>)}) ] ) (C {<unset>} {<foo>} {<bar>}) (C {<unset>} {<-f>} {<fun>}) (command.ShFunction name: fun body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<export>} {<Id.Lit_VarLike 'foo='> <hello>}) (C {<typeset>} {<-x>} {<Id.Lit_VarLike 'bar='> <world>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName foo)} right: {<hello>} ) redirects: [] ) (C {<err_exit>} {(SQ <'export scoping problem in function'>)}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<fun>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<export>}) (C {<grep>} {<foo>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {(SQ <'foo=hello'>)} ) redirects: [] ) (C {<err_exit>} {(SQ <'export not working in functions'>)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<export>}) (C {<grep>} {<bar>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -x not local'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'typeset -r IFS=;print -r $(pwd)'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } right: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<pwd>}) right: <Id.Eof_RParen _> ) ) } ) redirects: [] ) (C {<err_exit>} {(SQ <'readonly IFS causes command substitution to fail'>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'fred['> name: fred index: {<Id.Lit_Digits 66>} ) op: assign_op.Equal rhs: {<88>} spids: [2051] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-pa>}) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Other '*'> <fred> <Id.Lit_Other '*'>} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -pa not working'>)}) ] ) (C {<unset>} {<x>} {<y>} {<z>}) (C {<typeset>} {<-LZ3>} {<Id.Lit_VarLike 'x='> <abcd>} {<y>} {<Id.Lit_VarLike 'z='> <00abcd>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {<03>} spids: [2102] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName y)} right: {(DQ <'3 '>)} ) redirects: [] ) (C {<err_exit>} {(SQ <'-LZ3 not working for value 03'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName x)} right: {(DQ <abc>)} ) redirects: [] ) (C {<err_exit>} {(SQ <'-LZ3 not working for value abcd'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName x)} right: {(DQ <abc>)} ) redirects: [] ) (C {<err_exit>} {(SQ <'-LZ3 not working for value 00abcd'>)}) ] ) (C {<unset>} {<x>} {<z>}) (C {<set>} {<Id.Lit_Other '+'> <a>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for z undefined failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(SQ <'typeset -i z=45'>)} spids: [2200] ) ] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName x))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(SQ <'typeset -a z=(a b c)'>)} spids: [2277] ) ] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName x))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(SQ <'typeset -C z=(\n'> <'\tfoo=bar\n'> <'\txxx=bam\n'> <')'>)} spids: [2354] ) ] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName x))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\t'>] right: <Id.Right_SingleQuote '\''> ) } replace: (rhs_word.Empty) replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2368] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_Literals '('> <Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) } replace: {(SQ <'('>)} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2378] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) } replace: {(SQ <';'>)} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2393] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(SQ <'typeset -A z=([bar]=bam [xyz]=bar)'>)} spids: [2473] ) ] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName x))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo) op: assign_op.Equal rhs: {<abc>} spids: [2550] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(SQ <'typeset -n z=foo'>)} spids: [2553] ) ] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName x))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}) ] ) (C {<typeset>} {<Id.Lit_Other '+'> <n>} {<z>}) (C {<unset>} {<foo>} {<z>}) (C {<typeset>} {<-T>} {<Id.Lit_VarLike 'Pt_t='> (sh_array_literal left: <Id.Op_LParen _> words: [{<float>} {<Id.Lit_VarLike 'x='> <1>} {<Id.Lit_VarLike 'y='> <2>}] ) } ) (C {<Pt_t>} {<z>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name z> var_name: z suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\t'>] right: <Id.Right_SingleQuote '\''> ) } replace: (rhs_word.Empty) replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2661] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_Literals '('> <Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) } replace: {(SQ <'('>)} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2671] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x suffix_op: (suffix_op.PatSub pat: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) } replace: {(SQ <';'>)} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } spids: [2686] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ <'Pt_t z='> ($ Id.VSub_DollarName x))} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset -p for type failed'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}) right: <Id.Eof_RParen _> ) } right: {(DQ <'Pt_t z'>)} ) redirects: [] ) (C {<err_exit>} {(DQ <'typeset +p for type failed'>)}) ] ) (C {<unset>} {<z>}) (command.ShFunction name: foo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<typeset>} {<-p>} {<bar>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bar='> name:bar) op: assign_op.Equal rhs: {<xxx>} spids: [2773] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<foo>}) right: <Id.Eof_RParen _> ) } right: {<bar> <Id.BoolBinary_GlobEqual '='> <xxx>} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -p not working inside a function'>)}) ] ) (C {<unset>} {<foo>}) (C {<typeset>} {<-L5>} {<foo>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {<foo>}) right: <Id.Eof_RParen _> ) } right: {(SQ <'typeset -L 5 foo'>)} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -p not working for variables with attributes but without a value'>)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{($ Id.VSub_DollarName SHELL)}] redirects: [ (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 2848 stdin_parts: [ <'typeset -L3 foo=aaa\n'> <'typeset -L6 foo=bbbbbb\n'> <'[[ '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'foo == bbbbbb ]]\n'> ] ) ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (C {<err_exit>} {(SQ <'typeset -L should not preserve old attributes'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{($ Id.VSub_DollarName SHELL)}] redirects: [ (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 2873 stdin_parts: [ <'typeset -R3 foo=aaa\n'> <'typeset -R6 foo=bbbbbb\n'> <'[[ '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'foo == bbbbbb ]]\n'> ] ) ) ] more_env: [] do_fork: T ) ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] right: <Id.Lit_RBrace '}'> ) (C {<err_exit>} {(SQ <'typeset -R should not preserve old attributes'>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expected='> name:expected) op: assign_op.Equal rhs: {(SQ <'YWJjZGVmZ2hpag=='>)} spids: [2889] ) ] redirects: [] ) (C {<unset>} {<foo>}) (C {<typeset>} {<-b>} {<-Z10>} {<foo>}) (command.Simple words: [{<read>} {<foo>}] redirects: [ (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)}) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName foo)} right: {(DQ ($ Id.VSub_DollarName expected))} ) redirects: [] ) (C {<err_exit>} {(SQ <'read foo, where foo is "typeset -b -Z10" not working'>)}) ] ) (C {<unset>} {<foo>}) (C {<typeset>} {<-b>} {<-Z10>} {<foo>}) (command.Simple words: [{<read>} {<-N10>} {<foo>}] redirects: [ (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)}) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName foo)} right: {(DQ ($ Id.VSub_DollarName expected))} ) redirects: [] ) (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset -b -Z10" not working'>)}) ] ) (C {<unset>} {<foo>}) (C {<typeset>} {<-b>} {<-A>} {<foo>}) (command.Simple words: [{<read>} {<-N10>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}] redirects: [ (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)}) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name foo> var_name: foo bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) } right: {(DQ ($ Id.VSub_DollarName expected))} ) redirects: [] ) (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset -b -A" foo not working'>)}) ] ) (C {<unset>} {<foo>}) (C {<typeset>} {<-b>} {<-a>} {<foo>}) (command.Simple words: [{<read>} {<-N10>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}] redirects: [ (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)}) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name foo> var_name: foo bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) } right: {(DQ ($ Id.VSub_DollarName expected))} ) redirects: [] ) (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset -b -a" foo not working'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {<Id.Lit_Other '%'> <B>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>} ) right: <Id.Eof_RParen _> ) } right: {<abcdefghij>} ) redirects: [] ) (C {<err_exit>} {(SQ <'printf %B for binary associative array element not working'>)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {<Id.Lit_Other '%'> <B>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>} ) right: <Id.Eof_RParen _> ) } right: {<abcdefghij>} ) redirects: [] ) (C {<err_exit>} {(SQ <'printf %B for binary indexed array element not working'>)}) ] ) (C {<unset>} {<foo>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'export foo=(bar=3)'>)}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) (C {<err_exit>} {(SQ <'compound variables cannot be exported'>)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'builtin date'>)}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SEC='> name:SEC) op: assign_op.Equal rhs: {<1234252800>} spids: [3185] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETZ='> name:ETZ) op: assign_op.Equal rhs: {<EST5EDT>} spids: [3188] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EDT='> name:EDT) op: assign_op.Equal rhs: {<03>} spids: [3191] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PTZ='> name:PTZ) op: assign_op.Equal rhs: {<PST8PDT>} spids: [3194] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PDT='> name:PDT) op: assign_op.Equal rhs: {<00>} spids: [3197] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD) op: assign_op.Equal rhs: { (DQ <'date -f%H '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'#'> ($ Id.VSub_DollarName SEC) ) } spids: [3201] ) ] redirects: [] ) (C {<export>} {<Id.Lit_VarLike 'TZ='> ($ Id.VSub_DollarName ETZ)}) (C {<set>} {<-->} { (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) ) } {(DQ )} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ )} { (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) ) } {(DQ )} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))} { (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) ) } {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))} {(DQ ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT))} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ )} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} { (DQ ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) ) } {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT))} {(DQ <'foo=bar'>)} {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))} {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 4>} ) redirects: [] ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [3378] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<print>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName SHELL)} {<-c>} { (DQ <'builtin date; '> ($ Id.VSub_Number 2) <' '> ($ Id.VSub_DollarName CMD) <'; '> ($ Id.VSub_Number 3) <' '> ($ Id.VSub_DollarName CMD) <'; '> ($ Id.VSub_Number 4) <' '> ($ Id.VSub_DollarName CMD) ) } ) right: <Id.Eof_RParen _> ) } ) right: <Id.Eof_RParen _> ) } spids: [3382] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName got)} right: {($ Id.VSub_DollarName exp)} ) redirects: [] ) (C {<err_exit>} { (DQ <'[ \''> ($ Id.VSub_Number 2) <'\' \''> ($ Id.VSub_Number 3) <'\' \''> ($ Id.VSub_Number 4) <'\' ] env sequence failed -- expected \''> ($ Id.VSub_DollarName exp) <'\', got \''> ($ Id.VSub_DollarName got) <'\''> ) } ) ] ) (C {<shift>} {<4>}) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (C {<unset>} {<v>}) (C {<typeset>} {<-H>} {<Id.Lit_VarLike 'v='> <'/dev/null'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName v)} right: {<Id.Lit_Other '*'> <nul> <Id.Lit_Other '*'>} ) redirects: [] ) (C {<err_exit>} {(SQ <'typeset -H for /dev/null not working'>)}) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {(word_part.ArithSub anode:($ Id.Lit_ArithVarLike Errors))} ) ] )